《LINUX實操:ZeroMQ編譯安裝使用教程》要點:
本文介紹了LINUX實操:ZeroMQ編譯安裝使用教程,希望對您有用。如果有疑問,可以聯系我們。
因為工作必要,對ZeroMQ進行簡單的研究使用,為了使大家更好、更快的學習使用ZeroMQ,本文將從下載、安裝、編譯、幾方面來對ZeroMQ做個簡明的教程總結.
(1)到官網下載最新的ZeroMQ安裝包:http://download.zeromq.org/
(2)解壓:tar -xvf zeromq-4.1.4.tar.gz?
(3)切換到解壓文件夾:cd zeromq-4.1.4
(4)./configure --prefix=/opt/toolschain/zeroMQ/zeromq_gcc/? 想把GCC版本的zeroMQ安裝到/opt/toolschain/zeroMQ/zeromq_gcc,可是這時出現了錯誤的現象,并且沒有產生Makefile文件.
?
解決方案:ibsodium 是一個流行、易于使用的軟件庫.主要用于加密、解密、簽名和生成暗碼哈希等等.這是一個可移植的、跨編譯器支持、可安裝的,基于 NaCl 開發,提供一個兼容 API.它的目標是為所有構建更高級別的加密工具提供所需要的核心操作.
因此,在官方問題解答當中找到了解決方案,那就是不使用這個庫,只需要添加“--without-libsodium”即可
(https://github.com/zeromq/libzmq/issues/1274)
即,執行:[root@localhost zeromq_gcc]# ./configure --prefix=/opt/toolschain/zeroMQ/zeromq_gcc/ --without-libsodium
(5)編譯:[root@localhost zeromq_gcc]# ./configure --prefix=/opt/toolschain/zeroMQ/zeromq_gcc/ --without-libsodium
==================================================
注意:如果是想用arm-linux-gcc版本的,那么就的添加--host參數.
編譯:[root@localhost zeromq-4.1.4]# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/toolschain/zeroMQ/zeromq_arm/ --without-libsodium
然后,以下其他操作都是相同,但是最后一步,必要將編譯成功的lib下的庫文件libzmq.so.5復制到ARM開發板的lib庫文件夾當中
==================================================
?
執行勝利后,生成Makefile編譯文件.
(6)make
?
(7)make install
?
(8)查看安裝目次下生成的gcc版本庫文件
?
(9)測試程序(gcc版本,如果是arm版本需要修改為CC=arm-linux-gcc,同時.c文件包括的庫目錄也不相同)
Makefile代碼:
#Makefile for zeroMQ program
#Create Date:? 2017-06-30
#Date Modified:? 2017-06-30
#Author:? ? ? xinnanbufei
CC?=gcc
CFLAGS?= -std=gnu99 -Wall
PROGS?= zmq_client.o
TARG?= zmq_client
LINK_ZMQ = -I /opt/toolschain/zeroMQ/zeromq_gcc/include -L /opt/toolschain/zeroMQ/zeromq_gcc/lib -lzmq
all:?$(PROGS)
?$(CC) $(CFLAGS) -o $(TARG) $^? $(LINK_ZMQ)
clean:
?rm -rf *.o *~ zmq_client
zeroMQ server代碼:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
#include "/opt/toolschain/zeroMQ/zeromq_gcc/include/zmq.h"
int main (void)
{
?/*? Socket to talk to clients? ? */
?void *context = zmq_ctx_new ();
?void *responder = zmq_socket (context, ZMQ_REP);
?int rc = zmq_bind (responder, "tcp://*:5555");
?assert (rc == 0);
?while(1)
?{
? char buffer [10];
? zmq_recv (responder, buffer, 10, 0);
? printf ("Received Hello\n");
? sleep (1);? ? ? ? ? /*Do some 'work'*/
? zmq_send (responder, "World", 5, 0);
?}
?return 0;
}
zeroMQ client代碼:
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include "/opt/toolschain/zeroMQ/zeromq_gcc/include/zmq.h"
int main (void)
{
?printf ("Connecting to hello world server…\n");
?/*創立一個新的上下文*/
?void *context = zmq_ctx_new ();
?void *requester = zmq_socket (context, ZMQ_REQ);
?/*通過tcp協議,5555端口,連接本機服務端*/
?zmq_connect (requester, "tcp://localhost:5555");
?int request_nbr;
?for (request_nbr = 0; request_nbr != 10; request_nbr++)
?{
? char buffer [10];
? printf ("Sending Hello %d…\n", request_nbr);
? zmq_send (requester, "Hello", 5, 0);
? zmq_recv (requester, buffer, 10, 0);
? printf ("Received World %d\n", request_nbr);
?}
?zmq_close (requester);
?zmq_ctx_destroy (context);
?return 0;
}
(10)Make編譯,勝利
(11)執行./zmq_server? 或者? zmq_server? 呈現問題
./zmq_client: error while loading shared libraries: libzmq.so.5: cannot open shared object file: No such file or directory
?
(12)辦理問題
是因為沒有將zeromq的lib路徑添加到 ld.so.conf這里 .
那現在我們將libzeromq.so的路徑添加濤ld.so.conf中,具體操作步調如下:
A、進入到 etc 下? cd /etc
?
B、編輯 ld.so.conf ,sudo vim ld.so.conf
加入 libzmq.so 的路徑? /usr/local/zeromq/lib
保留之后
?
C、保留退出后,再執行命令ldconfig
?
不必定顯示zeroMQ的lib路徑,通過即可.
(13)以上步驟完成后,重新編譯程序,執行成功
?
(14)gcc版本移植成功!!!
(15)arm-linux-gcc版本,必要移植最后一步
將libzmq.so.5復制到ARM文件系統的lib文件夾下
?
(16)arm-linux-gcc版本移植勝利!!!
本文永遠更新鏈接地址:
學習更多LINUX教程,請查看站內專欄,如果有LINUX疑問,可以加QQ交流《LINUX實操:ZeroMQ編譯安裝使用教程》。