mysqlclient库链接问题

时间:2010-01-17 10:33:30

标签: c++ c linux dynamic-linking

我在64位CentOS 5.4上将应用程序与mysqlclient库链接并获得链接错误(找不到-lmysqlclient)。 该库位于/ usr / lib64 / mysql /:

una@localhost$ ll /usr/lib64/mysql/
total 9072
    ...
lrwxrwxrwx 1 root root      26 Jan  3 15:54 libmysqlclient_r.so -> libmysqlclient_r.so.15.0.0
lrwxrwxrwx 1 root root      26 Jan  3 15:54 libmysqlclient_r.so.15 -> libmysqlclient_r.so.15.0.0
-rwxr-xr-x 1 root root 1518456 Sep  4 01:28 libmysqlclient_r.so.15.0.0
lrwxrwxrwx 1 root root      24 Jan  3 15:54 libmysqlclient.so -> libmysqlclient.so.15.0.0
lrwxrwxrwx 1 root root      24 Jan  3 15:54 libmysqlclient.so.15 -> libmysqlclient.so.15.0.0
-rwxr-xr-x 1 root root 1514000 Sep  4 01:28 libmysqlclient.so.15.0.0
     ...

该目录似乎已正确注册到Linux链接器:

una@localhost$ cat /etc/ld.so.conf.d/mysql-x86_64.conf 
/usr/lib64/mysql

我可以在此计算机上链接应用程序的唯一方法是指定库文件的完整路径,这在我的情况下是不可接受的。 什么可能导致这里的问题?

感谢。

2 个答案:

答案 0 :(得分:1)

-L/usr/lib64/mysql

ld.so.conf只在运行时使用,而不是在编译时使用。

答案 1 :(得分:1)

/ usr / lib64 / mysql肯定不在您的gcc默认搜索路径中。您可以使用autoconf脚本在此类分发中搜索libmysqlclient的安装路径,并使用-L标志动态使用找到的位置。