WINDOWS 安裝ZeroMQ


zmq看起來很好用,但是安裝起來不是一般麻煩。原來以為java綁定會提供jar包直接可使用,但是官網沒有提供已經編譯好的庫文件和jar。多么的不方便啊!最終還是要自己動手編譯!

 

安裝java版本的zmq,需要先安裝libzmq,即核心庫,然后是java綁定,即jzmq。

安裝libzmq

libzmq是ZMQ的核心庫,首先需要安裝該庫,然后才能使用ZMQ。
一開始圖方便,不想編譯源碼,比較麻煩不是?所以從 http://zeromq.org/distro:microsoft-windows下載windows安裝程序進行安裝。但是發現還是需要編譯安裝jzmq,所以干脆已開始就編譯安裝libzmq。
libzmq源碼的git項目位於 https://github.com/zeromq/libzmq,
注意坑:從git上下載源碼()后,使用vs2013編譯時,彈出“無法找到sidium.h”。無法想象竟然會缺失文件!
所以如果遇到上述問題,最好還是去 http://www.zeromq.org/area:download, 下載穩定版本,目前發現V4.0.5是可編譯的版本。
開始編譯之前,特別說明本次實踐的測試環境:
  • 編譯工具:vs 2013
  • 平台:windows 7 x64旗艦版
開始安裝:
  • 首先,運行vs2013,打開解決方案\zeromq-4.0.5\builds\msvc\msvc.sln,系統提示轉換方案,選擇是即可。設置配置為release win32。
  • 執行“生成/生成解決方案”,沒有意外的話構建會成功。
  • 生成的libzmq.lib位於\zeromq-4.0.5\builds\msvc\Release,libzmq.dll則位於\zeromq-4.0.5\lib中,將libzmq.lib拷貝到\zeromq-4.0.5\lib目錄,方便后面安裝jzmq。

安裝jzmq

jzmq是libzmq的java語言綁定。如果要在java程序中使用zmq,那么可以通過jzmq使用zmq的套接字。當然也可以使用jeromq,這是zmq的的java實現。
安裝jzmq比較麻煩,其中有大量的坑,一不小心就碰到大堆錯誤。
接下來,開始編譯安裝jzmq。

下載

編譯

在windows上編譯時,有幾個大坑!也許在 https://github.com/zeromq/jzmq/issues的問題列表里有其他人遇到的問題說明,但是一開始如果作者沒有特別說明,誰會去仔細看?我們都會默認沒有特別說明的軟件是能正常工作的,正常思維都是如此吧?
好,先打住抱怨,這沒有任何用處!另外,畢竟我沒有付任何費用,我不能像個怨婦一樣抱怨!

了解一些坑

1)坑一:在github的jzmq項目主頁上,找不到在windows上的構建說明,這應該是最大的坑吧。所以,你不清楚使用什么版本的visual studio。如果有人找到了,煩請相告。
2)坑2:“預先生成事件”的命令行根本就是錯的。
在jzmq屬性頁/配置屬性/生成事件/預先生成事件中,可以看到命令行:
 
點擊命令行,看到原來的命令是:
說明:
第一個紅框內的命令是不能執行的,必須按這個格式修改下:copy ..\config.hpp “..\..\..\src\main\c++\”;
第二個javac命令也是錯誤的,紅框內的ZFrame.java文件在編譯的時候會找不到Utils.java文件。錯誤提示如下:
注意上面紅框內的錯誤提示,這說明ZFrame.java不能識別Utils這個類。但實際上,該類與ZFrame在同一個包內,且訪問修飾符是public,所以按理說是可以訪問的!之所以報不能訪問的錯誤(即”找不到符號“),是因為Utils.java沒有被編譯,所以必須在ZFrame.java前加上Utils.java文件,如下:
  1. javac ..\..\..\src\main\java\org\zeromq\ZMQ.java ..\..\..\src\main\java\org\zeromq\ZMQException.java ..\..\..\src\main\java\org\zeromq\ZMQForwarder.java ..\..\..\src\main\java\org\zeromq\ZMQQueue.java ..\..\..\src\main\java\org\zeromq\ZMQStreamer.java ..\..\..\src\main\java\org\zeromq\EmbeddedLibraryTools.java ..\..\..\src\main\java\org\zeromq\App.java ..\..\..\src\main\java\org\zeromq\ZContext.java ..\..\..\src\main\java\org\zeromq\ZDispatcher.java ..\..\..\src\main\java\org\zeromq\Utils.java ..\..\..\src\main\java\org\zeromq\ZFrame.java ..\..\..\src\main\java\org\zeromq\ZMsg.java
經過上述處理后,命令行可以工作了。
 

那么正式開工吧

好了,既然已經知道有哪些地方需要注意並且如何修復后,我們開始工作。編譯環境和libzmq一樣,仍然是使用vs 2013。
首先修改上面說的命令行不准確的這兩個問題。
第二,修改jzmq的VC++包含目錄和庫目錄。
其中,在“包含目錄”中加入編譯好的libzmq的include路徑,並且修改java路徑。在“庫目錄”中加入libzmq的lib路徑,即上面的\zeromq-4.0.5\lib。如下:
 
可以編譯了,點擊”生成/生成解決方案“,輸出如下則意味着成功了。
 
生成文件,包括jzmq.dll,jzmq.lib,zmq.jar,被放在項目的lib目錄下。
 
至此,花費數小時來解決問題,構建過程總算艱難完成。但是目前尚不清楚zmq.jar包是否能正常工作,有待測試,詳細過程請點擊 這里
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM