zmq(C++)编译

一、安装libsodium(非必安装项)

1、下载源码

进入官网:https://github.com/jedisct1/libsodium,解压到指定目录。

2、Linux平台

(1)编译前准备

  • 需要先安装libtoolautoconf
sudo apt install libtool
sudo apt install autoconf

(2)编译安装

进入libsodium解压后的目录,执行以下命令:

./autogen.sh
./configure --prefix=/opt/libsodium-1.0.18
make check
sudo make install

(3)配置环境

  • 如果前面执行configure时没有配置--prefix选项,则其会安装在/usr/local,则需要调用命令:
sudo ldconfig
  • 如果有配置--prefix选项,则需要设置环境变量,编辑/etc/profile文件,在末尾添加:
export LIBSODIUM_ROOT=/opt/libsodium-1.0.18-ubuntu-x64
# 运行依赖
export LD_LIBRARY_PATH=$LIBSODIUM_ROOT/lib:$LD_LIBRARY_PATH
# 开发依赖
export CPATH=$LIBSODIUM_ROOT/include:$CPATH
export LIBRARY_PATH=$LIBSODIUM_ROOT/lib:$LIBRARY_PATH
export PKG_CONFIG_PATH=$LIBSODIUM_ROOT/lib/pkgconfig:$PKG_CONFIG_PATH # 需要同步修改pkgconfig目录下libsodium.pc文件中的prefix路径,指定为当前的库路径

执行source /etc/profile,然后重启(否则只在当前终端中有效,新开终端需要再次执行命令才生效)。

3、Window平台

解压后,进入目录并执行构建命令:

cd libsodium\builds\msvc\build
buildall.bat
cd ../../../bin/

结束后将生成Win32x64平台的DebugRelease库文件。然后可以把相关的库和头文件拷贝到一起,例如:

  • 创建目录libsodium-1.0.18-windows-x64-msvc
  • libsodium/src/libsodium/include目拷贝进去(可以删除无用的include/Makefile.aminclude/sodium/version.h.in文件以及inclue/sodium/private目录)。
  • 创建子目录lib,然后把生成的动态库或静态库文件拷贝进去。

二、安装ZeroMQ

1、下载源码

进入官网:https://github.com/zeromq/libzmq,解压到指定目录。

2、Linux平台

(1)编译安装

进入libzmq解压后的目录,执行以下命令:

./autogen.sh
./configure --prefix=/opt/zeromq-4.3.4
make
sudo make install

说明: 某些情况下可能需要使用libsodium加密库替换默认内置的tweetnacl加密库,则需要加上选项--with-libsodium,大部分情况下不需要该选项。

(2)配置环境

  • 如果前面执行configure时没有配置--prefix选项,则其会安装在/usr/local,则需要调用命令:
sudo ldconfig
  • 如果有配置--prefix选项,则需要设置环境变量,编辑/etc/profile文件,在末尾添加:
export ZEROMQ_ROOT=/opt/zeromq-4.3.4-ubuntu-x64
# 运行依赖
export LD_LIBRARY_PATH=$ZEROMQ_ROOT/lib:$LD_LIBRARY_PATH
# 开发依赖
export PATH=$ZEROMQ_ROOT/bin:$PATH
export CPATH=$ZEROMQ_ROOT/include:$CPATH
export LIBRARY_PATH=$ZEROMQ_ROOT/lib:$LIBRARY_PATH
export PKG_CONFIG_PATH=$ZEROMQ_ROOT/lib/pkgconfig:$PKG_CONFIG_PATH # 需要同步修改pkgconfig目录下libzmq.pc文件中的prefix路径,指定为当前的库路径

执行source /etc/profile,然后重启(否则只在当前终端中有效,新开终端需要再次执行命令才生效)。

3、Windows平台

解压后,打开CMake工具,配置相关项,例如:

  • 选择构建动态库还是静态库
    在这里插入图片描述
  • 选择是否使用libsodium加密库替换默认内置的tweetnacl加密库,大部分情况下不需要勾选。
    dnimg.cn/dd7857f378ad4cb5bdd67eaffc0cd7af.png)

然后打开工程即可编译构建。构建结束后,右键INSTALL项目,点击生成即可生成依赖库,如:
在这里插入图片描述

三、安装ZMQPP

1、下载源码

进入官网:https://github.com/zeromq/zmqpp,解压到指定目录。

2、Linux平台

(1)编译前准备

进入ZMQPP解压后的目录,可以手动修改Makefile文件,视情况需要修改的有:

  • 修改ZMQPP库的安装路径(默认安装在/usr/local),例如:PREFIX = /opt/zmqpp-4.2.0
  • 如果编译安装ZeroMQ库时通过选项--prefix指定了非默认安装位置,则在ZMQPP库链接时需要通过-L库路径标识指定ZeroMQ库的路径。例如:COMMON_LIBS = -L/opt/zeromq-4.3.4/lib -lzmq

(2)编译安装

执行以下命令:

make
make check
sudo make install
make installcheck

(3)配置环境

  • 如果修改了库的安装路径,则需要设置环境变量,编辑/etc/profile文件,在末尾添加:
export ZMQPP_ROOT=/opt/zmqpp-4.2.0-ubuntu-x64
# 运行依赖
export LD_LIBRARY_PATH=$ZMQPP_ROOT/lib:$LD_LIBRARY_PATH
# 开发依赖
export CPATH=$ZMQPP_ROOT/include:$CPATH
export LIBRARY_PATH=$ZMQPP_ROOT/lib:$LIBRARY_PATH
export PKG_CONFIG_PATH=$ZMQPP_ROOT/lib/pkgconfig:$PKG_CONFIG_PATH # 需要同步修改pkgconfig目录下libzmqpp.pc文件中的prefix路径,指定为当前的库路径

执行source /etc/profile,然后重启(否则只在当前终端中有效,新开终端需要再次执行命令才生效)。

3、Windows平台

解压后,打开CMake工具,配置相关项,首次会出现红色框内的错误,提示找不到zeromq
在这里插入图片描述

这里配置本机的zeromq库路径,例如:
在这里插入图片描述

然后打开工程即可编译构建。然后过程中会出现如下错误:
在这里插入图片描述

上图红框内为失败原因,双击红框中任意一行,打开源码 compatibility.hpp,其中第132行有错,原因是SOCKET没有定义,需要包含 winsock2.h头文件。在第37行插入头文件#include <WinSock2.h>
在这里插入图片描述

继续编译后再次报如下错误:
在这里插入图片描述

上图红框内为失败原因,双击红框中任意一行,打开源码socket.cpp中第344行,显示std::min有问题。查资料得,因为Windows.h包含的windef.h中有宏定义minmax,导致此处min被展开宏。
在这里插入图片描述

查到一个简单的方法,使用项目范围的/D "NOMINMAX"选项就可以避免这个干扰。右击打开zmqppzmqpp-static项目属性,在配置属性>C/C++>命令行页面中的其它选项内,加上/D "NOMINMAX",如:
在这里插入图片描述

构建结束后,右键INSTALL项目,点击生成即可生成依赖库。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值