动态链接库问题,急,急!

duanzhh 2010-08-16 02:49:26
最近在搞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选项,他会去找动态库还是静态库呢?

第一个问题比较急,望大家给个解决办法,不胜感激
...全文
125 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
千羽鸣 2010-08-20
  • 打赏
  • 举报
回复
这时因为你的系统库文件路径中包含了那个目录,只需在编译时加上 -L路径名 来让它只到你指定的目录寻找即可。至于静态库动态库,这时没问题的,因为它链接时可以找到可兼容的库,这时没问题的
louyong0571 2010-08-17
  • 打赏
  • 举报
回复
貌似是先找的静态库,后找的动态库
ljhnew 2010-08-16
  • 打赏
  • 举报
回复
晕菜,看错了,以为是运行时报错呢
快乐田伯光 2010-08-16
  • 打赏
  • 举报
回复
程序都没编译出来.怎么还"ldd 你的程序"呢?
[Quote=引用 3 楼 ljhnew 的回复:]
执行以下"ldd 你的程序",看看结果,
看看/etc/ld.so.conf中的配置
执行set 看看LD_LIBRARYPATH的路径
[/Quote]
ljhnew 2010-08-16
  • 打赏
  • 举报
回复
执行以下"ldd 你的程序",看看结果,
看看/etc/ld.so.conf中的配置
执行set 看看LD_LIBRARYPATH的路径
快乐田伯光 2010-08-16
  • 打赏
  • 举报
回复
看一下/etc/ld.so.conf里面的内容,看里面是不是包含了/usr/lib64
谭海燕 2010-08-16
  • 打赏
  • 举报
回复
-l之后,先找静态的,静态的找不到然后会去找静态的。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧