【问题标题】:mosquitto_pub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directorymosquitto_pub:加载共享库时出错:libmosquitto.so.1:无法打开共享对象文件:没有这样的文件或目录
【发布时间】:2015-08-31 22:34:35
【问题描述】:

我在 Fedora 21 机器上从源代码编译 mosquitto 时遇到了这个问题。

mosquitto_pub:加载共享库时出错: libmosquitto.so.1:无法打开共享对象文件:没有这样的文件或 目录

即使重新安装,客户端(即 mosquitto_pub 和 mosquitto_sub)也会继续抛出该错误。

【问题讨论】:

    标签: linux mqtt mosquitto fedora-21


    【解决方案1】:

    这表明链接器不知道在哪里可以找到库。只需运行sudo /sbin/ldconfig 即可更新库的链接器缓存。这不是 mosquitto 独有的东西。

    【讨论】:

      【解决方案2】:

      假设您已将库安装到/usr/local/lib,这是默认设置,正确答案是以root/sudo 身份运行/sbin/ldconfig

      在某些系统上,您需要将 /usr/local/lib 添加到 ld 缓存的路径中,例如

      echo /usr/local/lib > /etc/ld.so.conf.d/local.conf
      

      【讨论】:

      • 不确定为什么这不是公认的答案。周围似乎更好,为我工作
      【解决方案3】:

      我用系统链接解决了这个问题

      $vi /etc/ld.so.conf
      include ld.so.conf.d/*.conf
      include /usr/local/lib
      /usr/lib
      /usr/local/lib
      $/sbin/ldconfig
      $ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
      

      【讨论】:

      • 这个答案没有意义,如果您的库位于 /usr/local/mosquitto/lib 中,那么您创建的符号链接将没有任何区别。如果库位于 /usr/local/lib 中,则只需运行 ldconfig 即可更新链接器缓存,无需修改 ld.so.conf。
      • 是的,你是对的 /usr/local/mosquitto/lib。我已将其更改为 /usr/local/lib。关于只是运行“ldconfig”来更新链接器缓存,在得到这个有点“肮脏”的解决方案之前,我确实尝试过但无济于事。
      • 你说得对,我很惊讶 /usr/local/lib 不在 Fedora 的默认设置中。
      • 此解决方案适用于在 amazon linux 2 上安装 mosquitto
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 2019-02-16
      • 2015-10-28
      • 1970-01-01
      相关资源
      最近更新 更多