我知道我有该库,但是可执行文件找不到。如果我知道它在哪里搜索,我可以在希望找到该库的地方创建一个符号链接。
$ ~/Apps/simutrans/simutrans
/home/dan/Apps/simutrans/simutrans: error while loading shared libraries: libbz2.so.1.0: cannot open shared object file: No such file or directory
$ locate libbz2
...
/lib/x86_64-linux-gnu/libbz2.so.1
/lib/x86_64-linux-gnu/libbz2.so.1.0
/lib/x86_64-linux-gnu/libbz2.so.1.0.4
/usr/lib/x86_64-linux-gnu/libbz2.a
/usr/lib/x86_64-linux-gnu/libbz2.so
...
显然,可执行文件不是/etc/ld.so.conf*
用来查找库的;如果是这样,那么它将找到lib:
$ cat /etc/ld.so.conf.d/x86_64-linux-gnu.conf
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
假设您的程序与当前用户一起运行(没有setuid等),则可以使用strace
来获取此信息,例如,
strace -o foo.out ~/Apps/simutrans/simutrans
并在输出文件中查找open
呼叫。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句