【问题标题】:mysqlclient library linkage problemmysqlclient库链接问题
【发布时间】:2010-01-17 10:33:30
【问题描述】:

我在 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

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

谢谢。

【问题讨论】:

  • “我可以在这台机器上链接应用程序的唯一方法是指定库文件的完整路径,这在我的情况下是不可接受的。”为什么这是不可接受的?

标签: c++ c linux dynamic-linking


【解决方案1】:
-L/usr/lib64/mysql

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

【讨论】:

  • 啊哈!我忘了 ld.so 是一个加载器,与链接无关。谢谢。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2011-06-26
    相关资源
    最近更新 更多