.so buscar rutas
Soy un principiante de Linux (procedente de un fondo de Windows). Me gustaría entender los detalles de cómo se cargan los objetos compartidos (archivos .so) en tiempo de ejecución. De acuerdo ahttp://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html El archivo /etc/ld.so.conf configura los directorios para buscar archivos .so en tiempo de ejecución. Sin embargo, un experimento que se muestra a continuación parece indicar que ese no es el caso. / usr / local / lib está en uno de los archivos .conf en /etc/ld.so.conf.d, pero cuando .so está en / usr / local / lib no se encuentra en tiempo de ejecución. A la inversa / usr / lib esno configurado por /etc/ld.so.conf, pero cuando mi .so está en / usr / lib ites encontrado en tiempo de ejecución.
¿Qué me estoy perdiendo?
Gracias Dave
davids@ds-ub64-7:/$ # Display the .so search path configured in /etc/ld.so.conf
davids@ds-ub64-7:/$ cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
davids@ds-ub64-7:/$ cat /etc/ld.so.conf.d/*.conf
/usr/lib/mesa
/usr/lib32/mesa
/usr/lib32/alsa-lib
/usr/lib/alsa-lib
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
davids@ds-ub64-7:/$ # libsotest.so.1 is in /usr/local/lib
davids@ds-ub64-7:/$ ls -la /usr/local/lib/libsotest*
lrwxrwxrwx 1 root root 14 2012-07-19 08:24 /usr/local/lib/libsotest.so -> libsotest.so.1
lrwxrwxrwx 1 root root 18 2012-07-19 08:24 /usr/local/lib/libsotest.so.1 -> libsotest.so.1.0.1
-rwxr-xr-x 1 davids davids 7952 2012-07-19 08:13 /usr/local/lib/libsotest.so.1.0.1
davids@ds-ub64-7:/$ # But when I run an executable that refrs to libsotest.so.1, the loader doesn't find it.
davids@ds-ub64-7:/$ /projects/sotest/exe/sotestexe
/projects/sotest/exe/sotestexe: error while loading shared libraries: libsotest.so.1: cannot open shared object file: No such file or directory
davids@ds-ub64-7:/$ # Configure loader to display the paths it's searching...it's searching /usr/lib but not /usr/local/lib
davids@ds-ub64-7:/$ export LD_DEBUG=lib
davids@ds-ub64-7:/$ /projects/sotest/exe/sotestexe
warning: debug option `lib' unknown; try LD_DEBUG=help
/projects/sotest/exe/sotestexe: error while loading shared libraries: libsotest.so.1: cannot open shared object file: No such file or directory
davids@ds-ub64-7:/$ export LD_DEBUG=libs
davids@ds-ub64-7:/$ /projects/sotest/exe/sotestexe
6691: find library=libsotest.so.1 [0]; searching
6691: search cache=/etc/ld.so.cache
6691: search path=/lib/tls/x86_64:/lib/tls:/lib/x86_64:/lib:/usr/lib/tls/x86_64:/usr/lib/tls:/usr/lib/x86_64:/usr/ lib:/lib/x86_64-linux-gnu/tls/x86_64:/lib/x86_64-linux-gnu/tls:/lib/x86_64-linux- gnu/x86_64:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls/x86_64:/usr/lib/x86_64-linux- gnu/tls:/usr/lib/x86_64-linux-gnu/x86_64:/usr/lib/x86_64-linux-gnu (system search path)
6691: trying file=/lib/tls/x86_64/libsotest.so.1
6691: trying file=/lib/tls/libsotest.so.1
6691: trying file=/lib/x86_64/libsotest.so.1
6691: trying file=/lib/libsotest.so.1
6691: trying file=/usr/lib/tls/x86_64/libsotest.so.1
6691: trying file=/usr/lib/tls/libsotest.so.1
6691: trying file=/usr/lib/x86_64/libsotest.so.1
6691: trying file=/usr/lib/libsotest.so.1
6691: trying file=/lib/x86_64-linux-gnu/tls/x86_64/libsotest.so.1
6691: trying file=/lib/x86_64-linux-gnu/tls/libsotest.so.1
6691: trying file=/lib/x86_64-linux-gnu/x86_64/libsotest.so.1
6691: trying file=/lib/x86_64-linux-gnu/libsotest.so.1
6691: trying file=/usr/lib/x86_64-linux-gnu/tls/x86_64/libsotest.so.1
6691: trying file=/usr/lib/x86_64-linux-gnu/tls/libsotest.so.1
6691: trying file=/usr/lib/x86_64-linux-gnu/x86_64/libsotest.so.1
6691: trying file=/usr/lib/x86_64-linux-gnu/libsotest.so.1
6691:
/projects/sotest/exe/sotestexe: error while loading shared libraries: libsotest.so.1: cannot open shared object file: No such file or directory
davids@ds-ub64-7:/$