当前位置: 技术问答>linux和unix
动态链接库问题,急,急!
来源: 互联网 发布时间:2016-09-20
本文导语: 最近在搞Sqlite,遇到了动态链接库问题,我的Sqlite安装目录是/home/duan/sqlite,在该目录下有lib、include等文件夹, 其中Sqlite的动态链接库是在lib目录下,如:sqlite3.so以及静态库sqlite3.a。 现在问题是root用户,在/usr/lib6...
最近在搞Sqlite,遇到了动态链接库问题,我的Sqlite安装目录是/home/duan/sqlite,在该目录下有lib、include等文件夹,
其中Sqlite的动态链接库是在lib目录下,如:sqlite3.so以及静态库sqlite3.a。
现在问题是root用户,在/usr/lib64下也有sqlite3.so动态库,而且我在编译程序时也指定了到/home/duan/sqlite路径下去找,如-L/home/duan/sqlite -lsqlite3;但程序还是报如下错误:
/usr/bin/ld: skipping incompatible /home/duan/sqlite/lib/libsqlite3.a when searching for -lsqlite3
/usr/bin/ld: skipping incompatible /usr/lib64/libsqlite3.so when searching for -lsqlite3
不知道为什么会到/usr/lib64/目录下去找该动态库?
另外/home/duan/sqlite路径下有同名称的动态库和静态库,那么编译时加上-lsqlite3选项,他会去找动态库还是静态库呢?
第一个问题比较急,望大家给个解决办法,不胜感激
其中Sqlite的动态链接库是在lib目录下,如:sqlite3.so以及静态库sqlite3.a。
现在问题是root用户,在/usr/lib64下也有sqlite3.so动态库,而且我在编译程序时也指定了到/home/duan/sqlite路径下去找,如-L/home/duan/sqlite -lsqlite3;但程序还是报如下错误:
/usr/bin/ld: skipping incompatible /home/duan/sqlite/lib/libsqlite3.a when searching for -lsqlite3
/usr/bin/ld: skipping incompatible /usr/lib64/libsqlite3.so when searching for -lsqlite3
不知道为什么会到/usr/lib64/目录下去找该动态库?
另外/home/duan/sqlite路径下有同名称的动态库和静态库,那么编译时加上-lsqlite3选项,他会去找动态库还是静态库呢?
第一个问题比较急,望大家给个解决办法,不胜感激
|
-l之后,先找静态的,静态的找不到然后会去找静态的。
|
看一下/etc/ld.so.conf里面的内容,看里面是不是包含了/usr/lib64
|
执行以下"ldd 你的程序",看看结果,
看看/etc/ld.so.conf中的配置
执行set 看看LD_LIBRARYPATH的路径
看看/etc/ld.so.conf中的配置
执行set 看看LD_LIBRARYPATH的路径
|
程序都没编译出来.怎么还"ldd 你的程序"呢?
|
晕菜,看错了,以为是运行时报错呢
|
貌似是先找的静态库,后找的动态库
|
这时因为你的系统库文件路径中包含了那个目录,只需在编译时加上 -L路径名 来让它只到你指定的目录寻找即可。至于静态库动态库,这时没问题的,因为它链接时可以找到可兼容的库,这时没问题的