前言
第一份工作中用到了ZMQ,后来面试的过程中被问到有没有研究过它的源码,如实回答没有看过,当时是真的加班太猛了,没有时间也没有意识去看。但自己计划表中一直列着这件事,今天抽出时间去实践一下这件事。
ZMQ的作者
ZeroMQ 的作者是Pieter Hintjens(1962–2016),我是搜ZMQ的书籍时才知道的。他不仅是代码的主要贡献者,还是社区的创建者和维护者,也是《ZeroMQ:云时代极速消息通信库》这本书的作者。他在2010年被查出了癌症晚期,随后他动了多次手术并进行了半年多的化疗,在2011年他仍然坚持完成了这本书的写作。作者于2016年4月写了一篇名为 a protocal for dying《死亡协议》的博文,同年10月4日作者使用安乐死结束了自己的生命。
作者在《死亡协议》一文中介绍了,自己从一开始不爱和人打交道,用他的话说,“也许有点自闭,心里只有工作、游泳和几只猫”;到后来自己爱上了参加研讨会,喜欢和别人交流,因为“在那里找人讲话不需要想借口,每个人都喜欢而且想要讲话”。接着讲述了发现患病的过程,以及身边人前来看望他的情形。作者对于面对死亡以及如何去看望身患绝症,时日不多的人提出了自己“协议”。看望者不要以泪洗面,不要说一些不走心的鼓励的话,而要和病人一块回忆之前生活的美好,帮助病人去做一些想要做的事情。而病人自己要尽量做到常喜乐,认清现实,坦诚地面对别人。作者说“死亡不等同于失败”。
代码和编译
代码路径:https://github.com/zeromq/libzmq。
本来想要在VS下进行编译的,发现builds目录下有个“deprecated-msvc”的文件夹,表示不推荐使用VS进行编译,后来到github库中了解到这部分内容已经停止维护了(当时不清楚这些,在VS2010下编译,各种报错,最后还是放弃了)。
linux下编译:
-
使用make编译(依赖Makefile文件):
- 在根目录下执行
sudo ./configure
,该命令用于检查环境,查看依赖项.使用该命令时,可以带一些prefix选项,比如./configure --without-libsodium
表示不使用libsodium加密库. 如果不指定prefix选项,可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share. 执行完./configure后,会生成Makefile文件. - 执行
sudo make
,去编译代码 - 执行
sudo make install
,把生成的文件拷贝系统目录中 - 执行
ldconfig
,由于生成了新的动态库,需要重新加载动态库
- 在根目录下执行
-
使用cmake编译(依赖CMakeList.txt文件)
- CMakeList.txt所在的目录中创建build文件夹,一会儿编译生成的文件放到这里
- 进入到build文件夹中,并执行
sudo cmake ..
,该命令会使用CMakeList.txt生成Makefile文件. sudo make
sudo make test
:对编译后的进行测试,如果结果有少量测试用例失败,可以忽略sudo make install
-
总结下上述的过程:
参考文章:
- https://blog.csdn.net/qq_41453285/article/details/105989698
- https://blog.csdn.net/fangye945a/article/details/84845325