当前位置: 技术问答>linux和unix
奇怪的ld问题:/usr/bin/ld: cannot find -lmysqlclient,但是ldconfig明明可以找到libmysqlclient.so
来源: 互联网 发布时间:2017-04-15
本文导语: 最近一个项目,原来是在Ubuntu 11.04上开发的,一点问题都没有,最近刚移到Fedora 15上,搭建好环境后编译,发现不能找到libmysqlclient.so,但是mysql-devel明明安装了,并且可以在/usr/lib/mysql/下发现,很奇怪。下面是一些...
最近一个项目,原来是在Ubuntu 11.04上开发的,一点问题都没有,最近刚移到Fedora 15上,搭建好环境后编译,发现不能找到libmysqlclient.so,但是mysql-devel明明安装了,并且可以在/usr/lib/mysql/下发现,很奇怪。下面是一些命令的结果。
1. make之后,发现如下错误:
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
2. 使用ldconfig看libmysqlclient.so是否加载
[rafael@localhost ~]$ sudo ldconfig -v | grep mysql
[sudo] password for rafael:
/usr/lib/mysql:
libmysqlclient.so.18 -> libmysqlclient_r.so
3. 再看/etc/ld.so.cache中是否有libmysqlclient.so
[rafael@localhost ~]$ sudo ldconfig -p | grep mysql
libmysqlclient.so.18 (libc6) => /usr/lib/mysql/libmysqlclient.so.18
libmysqlclient.so (libc6) => /usr/lib/mysql/libmysqlclient.so
以上三步结果都是正常的,但是程序就是链接不了libmysqlclient.so。
如果我在make中指定-L /usr/lib/mysql,程序可以链接libmysqlclient.so;
如果我ln -s所有的libmysqlclient.so到/usr/lib中,程序可以链接libmysqlclient.so。
所以我怀疑是不是我的ld没有去找/etc/ld.so.cache???
请大家帮我看看,凡有贡献者都有得分,一共100分,谢谢。
1. make之后,发现如下错误:
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
2. 使用ldconfig看libmysqlclient.so是否加载
[rafael@localhost ~]$ sudo ldconfig -v | grep mysql
[sudo] password for rafael:
/usr/lib/mysql:
libmysqlclient.so.18 -> libmysqlclient_r.so
3. 再看/etc/ld.so.cache中是否有libmysqlclient.so
[rafael@localhost ~]$ sudo ldconfig -p | grep mysql
libmysqlclient.so.18 (libc6) => /usr/lib/mysql/libmysqlclient.so.18
libmysqlclient.so (libc6) => /usr/lib/mysql/libmysqlclient.so
以上三步结果都是正常的,但是程序就是链接不了libmysqlclient.so。
如果我在make中指定-L /usr/lib/mysql,程序可以链接libmysqlclient.so;
如果我ln -s所有的libmysqlclient.so到/usr/lib中,程序可以链接libmysqlclient.so。
所以我怀疑是不是我的ld没有去找/etc/ld.so.cache???
请大家帮我看看,凡有贡献者都有得分,一共100分,谢谢。
|
ld.so.xx这个脚本的作用也是仅局限在运行时的.
编译时不箮.
编译时不箮.
|
export LD_LIBRARY_PATH=/usr/lib/mysql:$LD_LIBRARY_PATH
|
关注。
晚上回去研究下。
|
编译时要找到lib,要指定-L/libpath
的, 运行时 LD_LIBRARY_PATH 才会用到.
的, 运行时 LD_LIBRARY_PATH 才会用到.
|
也可以在makefile中使用 pkg-config --libs --cflags xxlib
比如
pkg-config --libs --cflags zlib
会输出
-I/usr/local/include -L/usr/local/lib -lz
比如
pkg-config --libs --cflags zlib
会输出
-I/usr/local/include -L/usr/local/lib -lz
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。