layout: post title: Cross compile libuv 1.16.0 with mingw-w64 on Linux categories:
在Windows上libuv推薦的方式是透過vcbuild編譯
也是offical的binary release編譯方式
但編譯後的dll會相依於Visual Studio的Runtime (vcruntime140.dll)
執行環境上沒有安裝相關Runtime時,就無法執行
為了解決這個問題,且又能跨平台,我選擇改用gcc toolchain自行編譯
gcc toolchain的幾種主流方法:
p.s. 偶然發現的一篇文章講到cygwin和mingw的不同
porting unix software to windows is NOT the purpose of MinGW -- that's what the Cygwin project is for. MinGW is a gcc compiler for creating win32 programs
編譯還需要幾個相關工具libtool
automake
m4
aclocal
在Windows上編譯還需要另外安裝這些工具,而且被該死的OfficeScan擋住以致於編譯速度天殺的慢
只好選擇在Linux上安裝mingw-w64編譯Windows的binary
由於開發機上沒有外網,要自己拉rpm安裝,以下是離線安裝需要的rpms
接著照這篇下指令
但還會缺少NDIS_IF_MAX_STRING_SIZE
的定義,在報錯處加上#define NDIS_IF_MAX_STRING_SIZE IF_MAX_STRING_SIZE
出現headers No Such File時,改成全小寫,在Linux上檔案名稱是大小寫相異的
預設標頭檔安裝在/usr/x86_64-w64-mingw32/sys-root/mingw/include/
這邊應該都能找到檔案
這樣就能順利編譯了
與程式進行連結時,LDFLAGS需要這些參數-luv -lws2_32 -lmswsock -ladvapi32 -liphlpapi -lpsapi -luserenv