这是我的/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.conf
ld.so
是运行时动态链接器的配置文件。
ld
故意忽略它。它有自己的默认值,并由-L
.通常,搜索路径也由驱动它的编译器确定 - 请参阅gcc -print-search-dirs
GCC。
LD_LIBRARY_PATH
也只影响ld.so
,不是ld
。