zeroMQ:无法打开 libzmq.so.4

zeroMQ: cannot open libzmq.so.4

我正在尝试为我的服务器 (redhat 7) 安装 zeroMQ。这是我所做的:
1) 下载zeroMQ并解压。
2) 导航到我放置 zeroMQ 和 运行 下面命令的文件:
./配置
制作
安装

现在我可以在/usr/local/include中找到两个头文件:zmq.h和zmq_utils.h,在/usr/local/lib中找到五个文件:libzmq.a libzmq.la libzmq.so libzmq.so.4 libzmq.so.4.0.0.

然后我尝试这样编码:

#include <zmq.h>
...
void * context = zmq_init(1);

但我收到此错误消息:对 `zmq_init'
的未定义引用 我发现 include 很好,但是找不到 'zmq_init',所以可能是 lib 文件的问题。但是所有的 lib 文件都在 /usr/local/lib 中,对吗?

我该怎么办?

问题已解决:

我收到该错误消息是因为 lib 文件位于目录中:/usr/local/lib
我们要做的就是在/etc/ld.so.conf.d/目录下新建一个名为local-lib.conf的文件,在里面写上/usr/local/lib。文件的名称并不重要,但其扩展名必须是.conf。
然后,我们必须导航到 /etc/ld.so.conf.d/ 并键入此命令:sudo ldconfig

我尝试了上面@Yves 提供的修复,但对我来说没有用,所以这是 Debian/Git 安装的另一种方法。

替代修复:

我在 Docker 容器上遇到过这个问题,这是由于 libzmq/czmq 是通过克隆 git 存储库安装的。

  • 问题是使用 git 安装时共享库位于 /usr/local/lib 文件夹中,而不是 /usr/lib/ 文件夹中,在我的例子中通常是 C/C+ + 程序查找共享库文件。

我通过使用命令 -

/usr/local/lib 文件夹中的所有文件复制到 /usr/lib/ 来修复它
`$ sudo cp -R /usr/local/lib/* /usr/lib`
  • 这是针对 RPi/ Ubuntu-16.04 docker,文件的命令或位置可能因您的 OS.
  • 而异