程序用到了 expat 库函数,运行的时候提示“can't load library 'libexpat.so.1'”
写了一个程序,用到了 expat 库的函数,但是运行的时候提示“can't load library 'libexpat.so.1'”
Makefile 里有这个LD_FLAGS:-Wl,-rpath=/usr1/lib
相应的在 /usr1/lib/ 下也有 libexpat.so 等库文件
运行的时候出错提示 “can't load library 'libexpat.so.1'”:
[/mnt/log]# test_env
test_env: can't load library 'libexpat.so.1'
用strace跟踪了一下,看起来好像是“-Wl,-rpath=/usr1/lib” 这个选项没有起作用?
[/mnt/log]# strace test_env
...
open("/usr1/lib/libexpat.so.1", O_RDONLY) = 3 # 奇怪的事,这里明明找到了,应该是 “-Wl,-rpath=/usr1/lib” 的功劳吧
fstat(3, {st_mode=S_IFREG|0755, st_size=302786, ...}) = 0
...
open("/home/work/platform/buildroot/build_arm/staging_dir//lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libexpat.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) # 前面不是找过了,也找到了嘛,干吗还去这些地方找?不明白啊不明白...
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40007000
write(2, "", 0) = 0
write(2, "test_env", 8test_env) = 8
write(2, ": can\'t load library \'", 22: can't load library ') = 22
write(2, "libexpat.so.1", 13libexpat.so.1) = 13
write(2, "\'\n", 2'
) = 2
munmap(0x40007000, 4096) = 0
exit(16) = ?
Process 125 detached
[/mnt/log]#
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
补充一个现象,如果用“export LD_LIBRARY_PATH=/usr1/lib/” 那运行就可以成功,不过报了段错误,这是另外一个问题了,把这个问题解决了再看那个![](https://www.wenjiangs.com/wp-content/uploads/chinaunix/202207/icon_smile.gif)
顶一下啊!