程序用到了 expat 库函数,运行的时候提示“can't load library 'libexpat.so.1'”

发布于 2022-10-15 07:32:25 字数 2310 浏览 17 评论 0

写了一个程序,用到了 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技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我要还你自由 2022-10-22 07:32:25

补充一个现象,如果用“export LD_LIBRARY_PATH=/usr1/lib/” 那运行就可以成功,不过报了段错误,这是另外一个问题了,把这个问题解决了再看那个

各自安好 2022-10-22 07:32:25

顶一下啊!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文