我有一个运行Debian Wheezy的ARM嵌入式系统。我们的自定义编写的应用程序的某些功能被分成共享的库文件。我们将共享库文件存储在/ usr / local / lib下。
我看到的问题是我们的二进制文件之一无法正确启动,因为它无法从/ usr / local / lib加载共享库之一:
/ usr / local / bin / daemon_watchdog:加载共享库时出错:libroots-base.so.5.3:无法打开共享库文件:没有这样的文件或目录
文件libroots-base.so.5.3位于/ usr / local / lib中。应该在/ usr / local / lib中搜索库,因为我们在/etc/ld.so.conf.d/目录中添加了一个额外文件,专门包含/ usr / local / lib。我还运行了ldconfig来刷新缓存。
一个线索可能是文件libroots-base.so.5.3本身依赖于其他共享库。如果我在/ usr / local / lib中运行“ ldd libroots-base.so.5.3”,则表明未提取几个引用的库:
libboost_log.so.1.43.0 => not found libboost_thread.so.1.43.0 => not found libboost_system.so.1.43.0 => not found libPocoUtil.so.11 => not found libPocoFoundation.so.11 => not found libPocoDataSQLite.so.11 => not found libPocoData.so.11 => not found libgthread-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgthread-2.0.so.0
(0x402f1000)libdbus-glib-1.so.2 => /usr/lib/arm-linux-gnueabihf/libdbus-glib-1.so.2(0x4005c000)
但是,列出的未找到文件肯定存在于/ usr / local / lib中,例如
-rw-r--r-- 1 root root 821784 Nov 22 21:29 libboost_log.so.1.43.0
此外,如果在系统启动后将LD_LIBRARY_PATH手动设置为/ usr / local / lib,则可以很好地运行二进制文件。
谁能建议可能出什么问题?
谁能建议可能出什么问题?
如果设置LD_LIBRARY_PATH
解决了这个问题,这是几乎可以肯定,你没有添加/usr/local/lib
到/etc/ld.so.conf.d/
正确。
/etc/ld.so.conf.d/
您添加到哪个文件?
也许您有错字,尾随空格或其他东西。