编译通过了,运行时找不到动态库,which能够找到

lym841 2012-11-05 04:44:40
[root@192 pdmlreader]# ./pdmlreader -h
./pdmlreader: error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory
[root@192 pdmlreader]# which libpcap.so.1
/usr/local/lib/libpcap.so.1
[root@192 pdmlreader]# ldd pdmlreader
linux-gate.so.1 => (0x00110000)
libnbee.so => /root/test/netbee/samples/nbee/pdmlreader/../../../bin/libnbee.so (0x00111000)
libpcap.so.1 => not found
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x069ab000)
libm.so.6 => /lib/libm.so.6 (0x00661000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00d43000)
libc.so.6 => /lib/libc.so.6 (0x004f6000)
libxerces-c.so.28 => /usr/local/lib/libxerces-c.so.28 (0x0068a000)
libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x00164000)
libdl.so.2 => /lib/libdl.so.2 (0x00182000)
libpcap.so.1 => /usr/local/lib/libpcap.so.1 (0x00187000)
libnbprotodb.so => /root/test/netbee/src/nbprotodb/libnbprotodb.so (0x001bd000)
libnbpflcompiler.so => /root/test/netbee/src/nbpflcompiler/libnbpflcompiler.so (0x00d51000)
libnbsockutils.so => /root/test/netbee/src/nbsockutils/libnbsockutils.so (0x001e8000)
libnbnetvm.so => /root/test/netbee/src/nbnetvm/libnbnetvm.so (0x001ec000)
/lib/ld-linux.so.2 (0x004d6000)
libpthread.so.0 => /lib/libpthread.so.0 (0x002de000)
[root@192 pdmlreader]#
...全文
542 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lym841 2012-11-14
  • 打赏
  • 举报
回复
首先必须感谢先感谢4楼、5楼、6楼、还有10楼的兄弟。 添加添加动态库的路径最有效快捷方法是10楼讲的,以前一直有些误导环境变量中添加。虽然我的问题没解决,没解决,但是让我走出一个误区,间接的明白了一些东西。谢谢大侠们,结贴给分
honty 2012-11-09
  • 打赏
  • 举报
回复
PATH 是命令查找的路径,跟链接库没关系 /etc/ld.so.conf这个文件里定义查找库的目录 把/usr/local/lib/加到/etc/ld.so.conf文件内 ldconfig使其生效就行了
lym841 2012-11-09
  • 打赏
  • 举报
回复
不好意思,图片的效果不太好,上面已经回答4、5、6楼的问题了,谢谢你们。在装一些软件时没出现这种问题,虽然不是必然出现的偶然出现的几率还是蛮多的。
lym841 2012-11-09
  • 打赏
  • 举报
回复
不还意思,图片的效果不太好,上面已经回答4、5、6楼的问题了,谢谢你们。在装一些软件时没出现这种问题,虽然不是必然出现的偶然出现的几率还是蛮多的。
lym841 2012-11-09
  • 打赏
  • 举报
回复

早已经设置过环境变量了,而且能够which到它,说明环境变量已经生效。这个跟环境变量没关系,在linux系统下经常出现这种问题,我将这些动态库移到/usr/lib/的目录就ok了,有时在/usr/lib/的动态库找不到时 我将动态库移到/usr/local/lib然后又能找到了,刚开始学linux我纠结了很久但是我知道如何解决,现在想知道引起这种情况的原因,难道是操作系统实时性不够强???
沭水河畔 2012-11-05
  • 打赏
  • 举报
回复
方法一: 执行程序前,配一下库的搜寻路径 export LD_LIBRARY_PATH=/usr/local/lib/ 方法二: 检查一下/etc/ld.so.conf.d/里的conf文件,看是否有包含/usr/local/lib 有的话,直接sudo ldconfig更新系统;没有的话把它加进去,然后再更新。
jxhqb 2012-11-05
  • 打赏
  • 举报
回复
楼上说的对,你看看Path中包括这个路径没
Franklin 2012-11-05
  • 打赏
  • 举报
回复
./pdmlreader 的环境变量不含路径:/usr/local/lib/libpcap.so.1
lym841 2012-11-05
  • 打赏
  • 举报
回复
顶顶。。。。
lym841 2012-11-05
  • 打赏
  • 举报
回复
顶。。。。。
lym841 2012-11-05
  • 打赏
  • 举报
回复
自己顶顶。。。。。

23,125

社区成员

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

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