zmq的安装以及调试

来源:互联网 发布:大数据100g百度云 编辑:程序博客网 时间:2024/05/19 01:09

1.前提条件是保证以下工具libtoolpkg-configbuild-essentialautoconf,  automake已经安装。

2.其次是uuid-dev库安装

3.编译安装步骤如下

git clone https://github.com/zeromq/libzmq./autogen.sh && ./configure && make -j 4make check && make install && sudo ldconfig

Or, using CMake:

git clone https://github.com/zeromq/libzmqmkdir cmake-build && cd cmake-buildcmake .. && make -j 4make test && make install && sudo ldconfig

以上命令执行工程中,最好加上sudo,确保权限问题。

4.其中C++版本的<zmq.hpp>头文件需要重新从github下载,并放进自己的工程头文件目录下

5.链接库的问题:libzmq的安装是在/usr/local/lib目录下,但程序一般搜索库函数的路径是在/usr和/usr/lib目录下,所以需要重新链接libzmq的路径

按照网络很多教程所说,只需要sudo vim /etc/ld.so.conf,然后添加进/usr/local/lib即可,最后

sudo /sbin/ldconfig。我的情况是编译能通过,但程序执行的时候还是报错,提示找不到库函数,最后将所提示的库文件cp到/usr目录下和/usr/lib目录下,就OK了。-------其中原因暂时无解。


6.调试问题

(1)错误提示:terminate called after throwing an instance of 'zmq::error_t',最终发现在zmq接受节点中,缺少了setsockopt()函数,需要添加const char *filter = ""; setsockopt(ZMQ_SUBSCRIBE,filter,strlen(filter)),这是创建消息过滤标志,optional value为0,表示接受所有广播消息。一个非空的option_value值会只订阅所有以option_value的值为前缀的消息。

(2)将接受到的消息解析出来:

zmq::message_t subuwb;

subscriber.recv(&subuwb);

std::cout<<"recv data:"<<(const char *)subuwb.data()<<std::endl;

需要好好理解(const char *)subuwb.data()的由来,参考其头文件zmq.hpp中的函数声明


原创粉丝点击