《LINUX實(shí)操:ZeroMQ編譯安裝使用教程》要點(diǎn):
本文介紹了LINUX實(shí)操:ZeroMQ編譯安裝使用教程,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
因?yàn)楣ぷ鞅匾?對(duì)ZeroMQ進(jìn)行簡(jiǎn)單的研究使用,為了使大家更好、更快的學(xué)習(xí)使用ZeroMQ,本文將從下載、安裝、編譯、幾方面來(lái)對(duì)ZeroMQ做個(gè)簡(jiǎn)明的教程總結(jié).
(1)到官網(wǎng)下載最新的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,可是這時(shí)出現(xiàn)了錯(cuò)誤的現(xiàn)象,并且沒(méi)有產(chǎn)生Makefile文件.
?
解決方案:ibsodium 是一個(gè)流行、易于使用的軟件庫(kù).主要用于加密、解密、簽名和生成暗碼哈希等等.這是一個(gè)可移植的、跨編譯器支持、可安裝的,基于 NaCl 開(kāi)發(fā),提供一個(gè)兼容 API.它的目標(biāo)是為所有構(gòu)建更高級(jí)別的加密工具提供所需要的核心操作.
因此,在官方問(wèn)題解答當(dāng)中找到了解決方案,那就是不使用這個(gè)庫(kù),只需要添加“--without-libsodium”即可
(https://github.com/zeromq/libzmq/issues/1274)
即,執(zhí)行:[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參數(shù).
編譯:[root@localhost zeromq-4.1.4]# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/toolschain/zeroMQ/zeromq_arm/ --without-libsodium
然后,以下其他操作都是相同,但是最后一步,必要將編譯成功的lib下的庫(kù)文件libzmq.so.5復(fù)制到ARM開(kāi)發(fā)板的lib庫(kù)文件夾當(dāng)中
==================================================
?
執(zhí)行勝利后,生成Makefile編譯文件.
(6)make
?
(7)make install
?
(8)查看安裝目次下生成的gcc版本庫(kù)文件
?
(9)測(cè)試程序(gcc版本,如果是arm版本需要修改為CC=arm-linux-gcc,同時(shí).c文件包括的庫(kù)目錄也不相同)
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");
?/*創(chuàng)立一個(gè)新的上下文*/
?void *context = zmq_ctx_new ();
?void *requester = zmq_socket (context, ZMQ_REQ);
?/*通過(guò)tcp協(xié)議,5555端口,連接本機(jī)服務(wù)端*/
?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)執(zhí)行./zmq_server? 或者? zmq_server? 呈現(xiàn)問(wèn)題
./zmq_client: error while loading shared libraries: libzmq.so.5: cannot open shared object file: No such file or directory
?
(12)辦理問(wèn)題
是因?yàn)闆](méi)有將zeromq的lib路徑添加到 ld.so.conf這里 .
那現(xiàn)在我們將libzeromq.so的路徑添加濤ld.so.conf中,具體操作步調(diào)如下:
A、進(jìn)入到 etc 下? cd /etc
?
B、編輯 ld.so.conf ,sudo vim ld.so.conf
加入 libzmq.so 的路徑? /usr/local/zeromq/lib
保留之后
?
C、保留退出后,再執(zhí)行命令ldconfig
?
不必定顯示zeroMQ的lib路徑,通過(guò)即可.
(13)以上步驟完成后,重新編譯程序,執(zhí)行成功
?
(14)gcc版本移植成功!!!
(15)arm-linux-gcc版本,必要移植最后一步
將libzmq.so.5復(fù)制到ARM文件系統(tǒng)的lib文件夾下
?
(16)arm-linux-gcc版本移植勝利!!!
本文永遠(yuǎn)更新鏈接地址:
學(xué)習(xí)更多LINUX教程,請(qǐng)查看站內(nèi)專欄,如果有LINUX疑問(wèn),可以加QQ交流《LINUX實(shí)操:ZeroMQ編譯安裝使用教程》。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10550.html