mingw編譯的能在linux下運行,其編譯方法為:1、透過「sudo apt-get install mingw-w64」指令安裝mingw32;2、在linux上執行「sudo apt-get install wine -development wine ~/hello.exe >hello world」即可。
本教學操作環境:ubuntu18.04 系統、mingw32、Dell G3電腦。
mingw編譯的能在linux下運作嗎?
#能。
linux平台交叉編譯Windows 程式
編譯測試環境:ubuntu18.04
第一步:安裝mingw32
sudo apt-get install mingw-w64 sudo apt-get install mingw-w64-tools sudo apt-get install mingw-w64-i686-dev sudo apt-get install mingw-w64-x86-64-dev
上面這些可能會有重複的地方,為了省勁,直接都安裝了。
安裝完之後就可以編譯程式碼了
i686-w64-mingw32-gcc -o hello.exe hello.c
第二部分:測試編譯出來的程式
編譯出來的exe檔可以copy到windows上測試,不過為了省勁,我想直接在linux上執行。這樣就需要完整wine了。
sudo apt-get install wine-development wine ~/hello.exe >hello world
第三部:編譯64位元程式
因為本人需要編譯x64位元程序,但測試發現程式為32位元程式。
x86_64-w64-mingw32-gcc -o hello64.exe hello.c
第四部:在windows上使用pthread 函式庫
pthread真的很好用,windows預設沒有pthread函式庫。
i686-w64-mingw32-gcc -o pthread_create.exe pthread_create.c -lpthread -D__WIN32
竟然發現直接編譯過了,表示mingw32 已經把pthread函式庫包含進去了。
跑到windows上面執行,報"libwinpthread-1.dll .......... not found"
我直接將/usr/i686-w64-mingw32/ lib 資料夾下的libwinpthread-1.dll檔案複製到windows裡面。發現可以運行了。
夠簡單,夠粗暴吧?不過確實很爽
其實我windows下面也下載了pthread函式庫,可惜還是報找不到函式庫,可能是gcc不是隱含載入吧。
關於MinGW編譯程式出現缺少libgcc_s_dw2-1.dll問題
原來是連結時預設使用動態linking,對方的電腦無依賴的DLL模組。
於是我在連結後加入指令:
-static-libstdc++ -static-libgcc
相關推薦:《Linux影片教學》
以上是mingw編譯的能在linux下運作嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!