Este es mi/etc/ld.so.conf
/usr/local/lib64
/usr/local/lib
include /etc/ld.so.conf.d/*.conf
El directorio /etc/ld.so.conf.d/
contiene mysql-x86_64.conf
el cual contiene solo esta línea:/usr/lib64/mysql
El /usr/lib64/mysql
directorio [incluido en el .conf
archivo] contiene estos archivos:
total 45,961,216
drwxr-xr-x 2 root root 4,096 Apr 11 17:20 ./
drwxr-xr-x 121 root root 81,920 Mar 30 20:01 ../
-rw-r--r-- 1 root root 28,951,398 Dec 9 21:40 libmysqlclient.a
lrwxrwxrwx 1 root root 20 Dec 9 21:56 libmysqlclient.so -> libmysqlclient.so.21*
lrwxrwxrwx 1 root root 25 Dec 9 21:56 libmysqlclient.so.21 -> libmysqlclient.so.21.1.19*
-rwxr-xr-x 1 root root 16,869,104 Dec 9 21:40 libmysqlclient.so.21.1.19*
-rw-r--r-- 1 root root 44,910 Dec 9 21:36 libmysqlservices.a
Al ejecutar ldconfig -p | grep mysql
se devuelve esto:
libmysqlclient.so.21 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.21
libmysqlclient.so (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so
Cuando intento vincular un programa de prueba MySQL muy pequeño, aparece este error:
/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: cannot find -lmysqlclient
Agregar -L/usr/lib64/mysql
al enlazador funciona.
Mi pregunta:
De acuerdo a estorespuestay otra documentación que se encuentra en Internet ldd
considera el contenido del /etc/ld.so.conf
archivo. ¿Por qué en mi caso se ignora el contenido? ¿Qué estoy haciendo mal?
Respuesta1
ld.so.conf
es el archivo de configuración para ld.so
el vinculador dinámico en tiempo de ejecución.
ld
lo ignora, intencionalmente. Tiene sus propios valores predeterminados, complementados con -L
. Normalmente, la ruta de búsqueda también está determinada por el compilador que la impulsa; consulte gcc -print-search-dirs
GCC.
LD_LIBRARY_PATH
también solo afecta ld.so
,nold
.