当我从源代码编译 Fedora 21 盒子上的 mosquitto 时,我遇到了这个问题。
mosquitto_pub:加载共享库时出错: libmosquitto.so.1:无法打开共享对象文件:没有这样的文件或 目录
即使重新安装,客户端(即 mosquitto_pub 和 mosquitto_sub)也会不断抛出该错误。
假设您已经安装了库到 /usr/local/lib
,这是默认值,正确的答案是以 root/sudo 身份运行/sbin/ldconfig
。
在某些系统上,您需要将/usr/local/lib
添加到 ld 缓存的路径中,例如
echo /usr/local/lib > /etc/ld.so.conf.d/local.conf
我用系统链接解决了这个问题
$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
这表示链接器不知道在哪里可以找到库。只需运行 sudo /sbin/ldconfig
即可更新库的链接器缓存。这不是mosquitto独有的。
我在 Ubuntu 20.04 上从源代码安装了 mosquitto。因此,libmosquitto.so.1
与源文件位于同一目录中。我将其复制到usr/lib/x86_64-linux-gnu
文件夹中。然后运行mosquitto_sub
奏效了!