加载共享对象文件时搜索路径的顺序是怎样的?
我正在尝试运行一个可执行文件,它会尝试加载共享对象文件。共享对象文件可以在 找到/usr/lib/x86_64-linux-gnu/
。
我有两个用户,我们称他们为user1
和user2
。user1
可以运行可执行文件,但user2
遇到错误:无法打开共享对象文件:libicuuc.so
两个用户都拥有相同的LD_LIBRARY_PATH
。缺少什么?
答案1
人ldconfig可能会帮助你
/etc/ld.so.cache File containing an ordered list of libraries found
in the directories specified in /etc/ld.so.conf, as
well as those found in /lib and /usr/lib.
但是您的发行版可能包含除我的以外的其他信息,因此您应该阅读您的发行版。
决定哪些库绑定到可执行文件的另一种方法是使用LDD程序一个例子:
ldd /bin/echo
linux-vdso.so.1 => (0x00007ffc2277a000)
libc.so.6 => /lib64/libc.so.6 (0x0000003edc200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003edbe00000)