ld ignoriert ld.so.conf

ld ignoriert ld.so.conf

Das ist mein/etc/ld.so.conf

/usr/local/lib64
/usr/local/lib
include /etc/ld.so.conf.d/*.conf

Das Verzeichnis /etc/ld.so.conf.d/contains mysql-x86_64.confenthält nur diese eine Zeile:/usr/lib64/mysql

Das /usr/lib64/mysqlVerzeichnis [in der Datei aufgeführt .conf] enthält diese Dateien:

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

Beim Ausführen ldconfig -p | grep mysqlwird Folgendes zurückgegeben:

    libmysqlclient.so.21 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.21
    libmysqlclient.so (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so

Beim Versuch, ein sehr kleines MySQL-Testprogramm zu verknüpfen, erhalte ich diesen Fehler:

/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: cannot find -lmysqlclient

Das Hinzufügen -L/usr/lib64/mysqlzum Linker funktioniert.

Meine Frage:

DemzufolgeAntwortund andere im Internet gefundene Dokumentationen lddberücksichtigen den Inhalt der /etc/ld.so.confDatei – warum wird der Inhalt in meinem Fall ignoriert? Was mache ich falsch?

Antwort1

ld.so.confist die Konfigurationsdatei für ld.so, den dynamischen Laufzeitlinker.

ldignoriert es absichtlich. Es hat seine eigenen Standardwerte, ergänzt durch -L. Normalerweise wird der Suchpfad auch vom Compiler bestimmt, der es steuert – siehe gcc -print-search-dirsfür GCC.

LD_LIBRARY_PATHbetrifft auch nur ld.so,nichtld.

Siehe auchWas sind die ausführbaren ELF-Dateien für statischen Linker, dynamischen Linker, Loader und dynamischen Loader?

verwandte Informationen