ld 忽略 ld.so.conf

ld 忽略 ld.so.conf

這是我的/etc/ld.so.conf

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

該目錄僅/etc/ld.so.conf.d/包含mysql-x86_64.conf這一行:/usr/lib64/mysql

目錄/usr/lib64/mysql[文件中列出.conf]包含以下文件:

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

運行ldconfig -p | grep mysql返回:

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

當我嘗試連結一個非常小的 MySQL 測試程式時,我收到此錯誤:

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

添加-L/usr/lib64/mysql到鏈接器有效。

我的問題:

根據這個回答和其他在網路上找到的文件ldd正在考慮文件的內容/etc/ld.so.conf- 為什麼在我的情況下內容被忽略?我究竟做錯了什麼?

答案1

ld.so.confld.so是運行時動態連結器的設定檔。

ld故意忽略它。它有自己的預設值,並由-L.通常,搜尋路徑也由驅動它的編譯器決定 - 請參閱gcc -print-search-dirsGCC。

LD_LIBRARY_PATH也只影響ld.so,不是ld

也可以看看靜態連結器、動態連結器、載入器和動態載入器的可執行ELF檔案分別是什麼?

相關內容