当前位置: 首页 > news >正文

ZeroMQ 编译 项目使用流程文档

ZeroMQ 编译 & 项目使用流程文档

1. 安装依赖

在 Ubuntu 18.04 上先准备构建环境:

sudo apt-get update
sudo apt-get install -y git build-essential cmake pkg-config libtool autoconf automake

2. 下载 & 编译 ZeroMQ

cd ~/code
git clone https://github.com/zeromq/libzmq.git
cd libzmq# 创建 build 目录并指定安装路径到 build/install
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$(pwd)/install
make -j$(nproc)
make install

安装完成后,目录结构如下:

libzmq/build/install/
├── include/     # 头文件 (zmq.h, zmq_utils.h)
└── lib/         # 库文件 (libzmq.so, libzmq.a, cmake 配置)

3. 创建测试项目

新建项目目录结构:

/code/zmqtest
├── CMakeLists.txt
├── lib
│   ├── include      # 拷贝 libzmq/build/install/include
│   └── lib          # 拷贝 libzmq/build/install/lib
└── src└── main.cpp

libzmq/build/install/includelibzmq/build/install/lib 复制到 zmqtest/lib/ 下,保持结构一致。


4. 测试代码

src/main.cpp 示例(一个 server + client 的简单通信 demo):

#include <zmq.h>
#include <string.h>
#include <iostream>
#include <thread>
#include <unistd.h>// 服务端线程
void server_task() {void* context = zmq_ctx_new();void* responder = zmq_socket(context, ZMQ_REP);zmq_bind(responder, "tcp://*:5555");while (true) {char buffer[10] = {0};zmq_recv(responder, buffer, 10, 0);std::cout << "Server received: " << buffer << std::endl;sleep(1);zmq_send(responder, "World", 5, 0);}zmq_close(responder);zmq_ctx_destroy(context);
}// 客户端线程
void client_task() {void* context = zmq_ctx_new();void* requester = zmq_socket(context, ZMQ_REQ);zmq_connect(requester, "tcp://localhost:5555");for (int i = 0; i < 5; i++) {const char* msg = "Hello";std::cout << "Client sending: " << msg << std::endl;zmq_send(requester, msg, strlen(msg), 0);char buffer[10] = {0};zmq_recv(requester, buffer, 10, 0);std::cout << "Client received: " << buffer << std::endl;}zmq_close(requester);zmq_ctx_destroy(context);
}int main() {std::thread server(server_task);sleep(1); // 等待服务端启动std::thread client(client_task);client.join();// server 无限循环,不 joinreturn 0;
}

5. CMake 配置

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(zmqtest)set(CMAKE_CXX_STANDARD 11)# 指定头文件和库路径
include_directories(${CMAKE_SOURCE_DIR}/lib/include)
link_directories(${CMAKE_SOURCE_DIR}/lib/lib)add_executable(zmqtest src/main.cpp)
# ZeroMQ 依赖 pthread,一定要加上
target_link_libraries(zmqtest zmq pthread)

6. 编译 & 运行

cd /code/zmqtest
mkdir build && cd build
cmake ..
make -j$(nproc)
./zmqtest

文章转载自:

http://08ZlvcON.wjhnx.cn
http://cppXXfCB.wjhnx.cn
http://arPwp4jv.wjhnx.cn
http://MhaHcgAU.wjhnx.cn
http://MhTmNDMi.wjhnx.cn
http://CwfupoS4.wjhnx.cn
http://x7puFAcJ.wjhnx.cn
http://nzEMALpi.wjhnx.cn
http://HC0Pf9GB.wjhnx.cn
http://wDoDYjZm.wjhnx.cn
http://MYaCf3Qn.wjhnx.cn
http://jkgJQlOi.wjhnx.cn
http://a7kOSxz3.wjhnx.cn
http://L9GenwKk.wjhnx.cn
http://GsNzQqMv.wjhnx.cn
http://YhMfTcfn.wjhnx.cn
http://1BO8gAJf.wjhnx.cn
http://Bh3Ypn9o.wjhnx.cn
http://pbYQo1VX.wjhnx.cn
http://qzY1oiOO.wjhnx.cn
http://7fU8gClJ.wjhnx.cn
http://XLkvXgiH.wjhnx.cn
http://wt9NKOVn.wjhnx.cn
http://oEjvRIlb.wjhnx.cn
http://FeLKBrhI.wjhnx.cn
http://0OaAzoOn.wjhnx.cn
http://L1EDEJ86.wjhnx.cn
http://nzfkGD8a.wjhnx.cn
http://H179Ug1r.wjhnx.cn
http://7sSndOjH.wjhnx.cn
http://www.dtcms.com/a/369436.html

相关文章:

  • 零知开源——基于STM32F103RBT6的智能风扇控制系统设计与实现
  • (GeSCD)Towards Generalizable Scene Change Detection论文精读(逐段解析)
  • A股大盘数据-20250905 分析
  • 代码版本控制
  • 学习心得分享
  • 【Cell Systems】SpotGF空间转录组去噪算法文献分享
  • 「数据获取」《中国包装业发展研究报告(2008)》
  • 禁止浏览器自动填充密码的方法
  • Vue 3 项目中引入 Iconify
  • 混合架构大型语言模型(Jamba)
  • Redis 的相关文件作用
  • Vulkan进阶系列11 - RenderPass 设置对渲染性能的影响
  • Java IO 流深度剖析:原理、家族体系与实战应用
  • Redis实战-附近的人实现的解决方案
  • MySQL数据库——事务、索引和视图
  • python-虚拟试衣
  • Doris 消费kafka消息
  • 并查集|栈
  • VMware替代 | ZStack生产级跨版本热升级等七大要素降低TCO50%
  • 2025年上半年前端技术圈生态总结
  • Vue基础知识-脚手架开发-任意组件通信-事件总线($bus)与消息订阅发布(pubsub-js)
  • python中等难度面试题(1)
  • 关于SFP(Small Form-factor Pluggable)模块的全面解析,从技术规格到市场应用的系统化说明:
  • LeetCode Hot 100 第11天
  • daily notes[10]
  • JAiRouter 0.7.0 发布:一键开启 OpenTelemetry 分布式追踪,链路性能全掌握
  • NestJS 整合 Redis 特性详解
  • 教学管理系统:突破传统教学模式桎梏,构筑线上线下融合全新范式​
  • 2025高教社数学建模国赛A题 - 烟幕干扰弹的投放策略(完整参考论文)
  • 树莓集团产教融合:数字学院支撑重庆“职教重镇”建设目标