Dynamic-Linking
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
文件的內容 - 為什麼在我的情況下內容被忽略?我究竟做錯了什麼?
ld.so.conf``ld.so
是執行時動態連結器的配置文件。
ld
故意忽略它。它有自己的預設值,並由-L
. 通常,搜尋路徑也由驅動它的編譯器決定——參見gcc -print-search-dirs
GCC。
LD_LIBRARY_PATH
也只會影響ld.so
,不會ld
。