Linux:从/ usr / local / lib加载库时出错

 ttarm_33218389 发布于 2023-02-13 20:50

我有一个运行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,则可以很好地运行二进制文件。

谁能建议可能出什么问题?

1 个回答
  • 谁能建议可能出什么问题?

    如果设置LD_LIBRARY_PATH解决了这个问题,这是几乎可以肯定,你没有添加/usr/local/lib/etc/ld.so.conf.d/正确。

    /etc/ld.so.conf.d/您添加到哪个文件?

    也许您有错字,尾随空格或其他东西

    2023-02-13 20:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有