技术背景
ØMQ (也拼写作ZeroMQ,0MQ或ZMQ),号称号称是“史上最快的消息队列”,基于c语言开发。ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。
作为C开发人员有两个选择 CZMQ 或 libzmq (低级zeromq库)。
在这里简单记录 CentOS 下从零安装ZMQ相关依赖、解决各种问题最终实现一个最简单的请求-应答服务器-客户端效果。
ZeroMQ 在 centos下的安装
1)下载ZeroMQ
执行命令:
2)解压ZeroMQ
3)安装依赖
4)编译安装
提示缺少C编译器,先安装GCC。
安装OK!再次执行
提示缺少C++编译器,先安装G++。
安装OK!再次执行
ZeroMQ安装成功!
libzmq 在 CentOS 下的安装
libzmq开源仓库: https://github.com/zeromq/libzmq
Demo
(来源:https://zeromq.org/languages/c/#libzmq)
Server:
Client:
将文件存入以libzmq_server.c,libzmq_client.c命名的文件。
运行下列命令编译:
若出现错误,请移步异常问题记录区寻找答案
分别在两个终端运行,若成功,效果如下:
异常记录
undefined reference to `zmq_sendmsg'
解决方案:
编译时带上 -lzmq
例如:gcc -o hello hello.c -lzmq
error while loading shared libraries: libzmq.so.3
方法1:
找一下动态文件安装到哪里了:
将 /usr/local/lib 加到共享库配置文件 /etc/ld.so.conf 中,该方法一劳永逸,但是需要有操作权限
再执行成功.
方法2:设置环境变量LDLIBRARYPATH,适合没有操作权限时使用
编辑你当前用户的用户目录下的.bash_profile文件 在文件后面加上:
保存并关闭文件
使该文件改动生效(每次登录该用户时也会自动加载该文件,使文件生效) 执行成功
C程序头文件引用问题
一直没有搞清楚头文件引用 "" 和 <> 的区别,今天偶然查到:
- first:include<fileName.h> 引用系统头文件一般用<>。
- second:include"fileName.h" 引用自己定义的头文件一般用" "。
区别是<>首先去系统中去找," "则在自己当前文件夹找。
一般情况下系统头文件在 usr/include/中。