2016年8月8日 星期一

[mqtt]在 XP 上安裝 mosquitto

[mqtt]在 XP 上安裝 mosquitto

在 XP 上安裝 mosquitto,與在 windows 7 以上不一樣。

在 XP 上,需要使用標有 cygwin 的安裝檔。如果直接使用標注 win32 的安裝檔來裝,在執行時會出現 mosquitto.exe 不是正確的 win32 應用程式的錯誤。
下載 mosquitto-1.4.9-install-cygwin.exe 之後,安裝。一樣的,需要依說明下載 Win32OpenSSL_Light-1_0_2h.exe 與 pthreads-w32-2-9-1-release.zip 然後把需要的 dll 放到 mosquitto.exe 旁邊。
再來則必須要安裝 cygwin,到 cygwin 官網下載 setup-x86.exe,然後執行。只需要安裝基本 (base) 就好了,我們只要是複製幾個檔案。安裝好之後,就點 mosquitto.exe,它會告知少什麼 dll,然後就去 cygwin 安裝的地方 copy 過來。我記得是以下幾個:
* cygcrypto-1.0.0.dll
* cyggcc_s-1.dll
* cygssl-1.0.0.dll
* cygwin1.dll
* cygz.dll
這樣,mosquitto.exe 就正常可用。如果希望它變成一個服務,那最簡單是再執行一次安裝檔,選擇服務選項。如此就會在開機的時候自動啟動。
但是,這個安裝檔裡的 mosquitto_pub.exe 與 mosquitto_sub.exe 仍出現不是正確的 win32 應用程式的錯誤。我想也許是打包錯了,報了 issue 結果負責人說他沒有 XP,所以要我們自己 compile 試試。其實在他回覆之前,我就下載舊的安裝檔來試,裝在另一個目錄,中間有很多不同的錯誤,像是找不到 entry point 的、getTickCount64 不在 KERNEL32.DLL 的。最後終於在 mosquitto-1.2-install-cygwin.exe 找到一個說缺 msvcr100.dll 的。
msvcr100.dll 我找到有兩個,一個在 C:\windows\system32,一個則在 anaconda\Library\bin 裡面。結果是後面這個放到 mosquitto_sub/pub 旁邊才成功。但是 mosquitto-1.2-install-cygwin.exe 裡面的 mosquitto.exe 會出現 無法找到程序輸入點 inet_ntop (在動態連結函式庫 WS2_32.dll) 的錯誤。所以就安裝兩版來解決問題吧 XD
目前只有用到最簡單的連結,其他功能沒有用到(例如 ssl、帳號密碼),所以不知道是不是全功能完整無蟲。可以確定的是 服務正常、pub/sub 正常。私用應該沒問題。

沒有留言:

張貼留言