|
|
Возраст: 35 C нами с 26.01.2005 Репутация: 114.8
|
|
почему может быть такое,что ld.so берет либы не из стандартных диров и тех что указаны в /etc/ld.so.conf, а из совершенно посторонних,не указанных нигде?
вот что у меня:
root:/tools/etc# /usr/bin/ldd -v /usr/bin/as
linux-gate.so.1 => (0xffffe000)
libbfd-2.15.94.0.2.so => not found
libc.so.6 => /tools/lib/libc.so.6 (0x40017000)
/lib/ld-linux.so.2 (0x40000000)
Version information:
/usr/bin/as:
libc.so.6 (GLIBC_2.1) => /tools/lib/libc.so.6
libc.so.6 (GLIBC_2.0) => /tools/lib/libc.so.6
/tools/lib/libc.so.6:
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2
root:/lib# ls -l /lib/libbfd-2.15.94.0.2.so
lrwxrwxrwx 1 root root 30 Mar 28 11:43 /lib/libbfd-2.15.94.0.2.so -> /usr/lib/libbfd-2.15.94.0.2.so
root:/lib# cat /etc/ld.so.conf
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
# End /etc/ld.so.conf
root:/lib#
|
в /tools/lib у меня тоже есть "склад" библиотек,но они по идее не должны иметь к этому никакого никакого отношения.
как видите, та же libc почему-то берется из /tools/lib
та либа,что "не найдена" (libbfd-2.15.94.0.2.so) находится у меня в /lib
итак,проблема,наскольо я понимаю, в том,что ld.so ищет необходимые либы только в /tools/lib а не там где надо - в /lib и /etc/ld.so.conf
что делать?
|
_____________________________ "I have seen the future and it is just like the present, only longer."
-- Kehlog Albran, "The Profit"
|
|
|
|
|
|
|
Возраст: 37 C нами с 24.01.2005 Репутация: 87.7
|
|
ldconfig без параметров, затем с untrusted-директориями (не /usr/lib, /usr/local/lib) в качестве параметра. Еще man ldconfig.
|
|
|
|
|
|
|
|
Возраст: 35 C нами с 26.01.2005 Репутация: 114.8
|
|
javol, пробовал, не помогает.
root:/# ldconfig
root:/# ldd /usr/bin/as
linux-gate.so.1 => (0xffffe000)
libbfd-2.15.94.0.2.so => not found
libc.so.6 => /tools/lib/libc.so.6 (0x40017000)
/lib/ld-linux.so.2 (0x40000000)
root:/# ldconfig -l /usr/lib/libbfd-2.15.94.0.2.so
root:/# ldd /usr/bin/as
linux-gate.so.1 => (0xffffe000)
libbfd-2.15.94.0.2.so => not found
libc.so.6 => /tools/lib/libc.so.6 (0x40017000)
/lib/ld-linux.so.2 (0x40000000)
root:/# cat /etc/ld.so.cache|grep /tools
root:/#
|
|
_____________________________ "I have seen the future and it is just like the present, only longer."
-- Kehlog Albran, "The Profit"
|
|
|
|
|
|
|
Возраст: 44 C нами с 05.04.2005 Репутация: 121.2
|
|
set | grep LD
ps: сам компилил /usr/bin/as или в бинарнике было ?
|
_____________________________ IRC WeNet #programming
jid: seb2000@jabber.ru
|
|
|
|
|
|
|
Возраст: 35 C нами с 26.01.2005 Репутация: 114.8
|
|
seb, ничего.
да,сам компилил
|
_____________________________ "I have seen the future and it is just like the present, only longer."
-- Kehlog Albran, "The Profit"
|
|
|
|
|
|
|
Возраст: 44 C нами с 05.04.2005 Репутация: 121.2
|
|
__fastcall писал(а): |
да,сам компилил
|
значит этот путь (/tools/lib) вшит при компиляции в бинарник. ld умеет это делать (man ld /-rpath [Enter]n )
__fastcall писал(а): |
итак,проблема,наскольо я понимаю, в том,что ld.so ищет необходимые либы только в /tools/lib а не там где надо
|
никакой проблемы на самом деле нет так и должно быть
Дело в том, что при локальной компиляции libtool вкомпиливает полный путь библиотеки в бинарник.
libtool —config:# How to hardcode a shared library path into an executable.
hardcode_action=immediate
# Whether we should hardcode library paths into libraries.
hardcode_into_libs=yes
# Flag to hardcode $libdir into a binary during linking.
# This must work even if $libdir does not exist.
hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" | Наверное это связано с тем, что ./configure ты указывал какие-то ключи ? Например ./configure —libdir=/tools/lib ? Тогда непонятно почему тебя удивляет что он пытается использовать _свою_ либу из /tools/lib
|
|
|
|
|
|
|
|