在Linux使用mingw32来编写win32程序
2014-06-18 15:59
399 查看
MinGW - Minimalist GNU For Windows
Mingw32 是 GNU 計畫工具的集合,包含了大量的標頭檔(header files)、函式庫與指 令程式。目的在提供免費的工具以生產製作可於 Winodws 上直接執行而無須依賴輔助函式 庫的原生程式(Native Windows programs)。在 Debian 系統中,您可以安裝 DebianPackages:mingw32 、DebianPackages:mingw32-binutils 與 DebianPackages:mingw32-runtime 三個套件軟體。
DebianPackages:mingw32 - Minimalist GNU win32 (cross) compiler 包含 win32 跨平台編譯器
DebianPackages:mingw32-binutils - Minimalist GNU win32 (cross) binutils 包含 win32 跨平台指令集
DebianPackages:mingw32-runtime - Minimalist GNU win32 (cross) runtime 函式庫及標頭檔
DebianPackages:mingw32 包含的就是 g++(c++,cpp)、gcc(cc)、gcov、gccbug 等必備的 win32 跨平台編譯器,您需要這些編譯器產生可在 Microsoft Windows 上使用的 exe、dll 檔案等。DebianPackages:mingw32-binutils 則是 nm、strip、ar、ranlib、dlltool、as、ld、windres、addr2line、size、objdump、readelf 等,在產生原生程式時必要的工具。這些指令為了與原生編譯器有所區別,目錄與其他軟體大不相同,擺在 /usr/i586-mingw32msvc/ 中。指令命名原則也以 i586-mingw32msvc 開頭。
例如產生一個 console executable 執行檔。
user@debian:~$ cat hello.cpp #include <iostream> int main(int argc, char* argv[]) { std::cout << "Hello world\n"; return 0; } user@debian:~$ i586-mingw32msvc-g++ -o hello.exe hello.cpp user@debian:~$ file hello.exe hello.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable
如果你安裝了 wine,你甚至可以直接執行它。由於 wine 配合 binfmt-support 使用,因此你的系統應該懂著識別 .exe 檔案,並以 wine 執行他。
user@debian:~$ ./hello.exe Hello world Wine exited with a successful status
或者編譯一個顯示一個訊息窗的圖形化使用者介面程式
user@debian:~$ cat > hello.cpp #include <windows.h> int WINAPI WinMain(HINSTANCE d1, HINSTANCE d2, LPSTR d3, int d4) { MessageBox(NULL, "Hello, World!", "", MB_OK); return(0); } user@debian:~$ i586-mingw32msvc-g++ -o hello.exe hello.cpp -mwindows user@debian:~$ file hello.exe hello.exe: MS Windows PE 32-bit Intel 80386 GUI executable not relocatable
您大概注意到指令中新增了 "-mwindows" 參數,這是用來建立 "Windows Application" 而非 "Console Application",並在連結(linking) 過程中確保使用 Windows 函式庫。上述 我們只顯示 "Hello World" 字串的範例中,便是所謂的 "Console Application",執行時 會啟動一個主控台(Console)視窗。您可以加上 " -mconsole" 以編譯為 "Console Application"。
透過 mingw32 的協助,您可以在 Linux 系統上設計 "Write Once, Run Everywhere" 的 C / C++ 程式,例如在 Linux 平台編譯同時支援 Unix 、 Mac 與 Windows 的 putty。
取自"http://wiki.debian.org.tw/index.php/Mingw32"
本頁面已經被瀏覽2,126次。 最後更改10:02 2005年七月14日. 本站所有內容允許以下方式利用: GNU Free Documentation License 1.2
相关文章推荐
- Linux下使用Eclipse编写MapReduce程序的配置
- error:2014-03-11周二:在编写win32程序时依旧使用控制台程序。
- 使用 C++11 编写 Linux 多线程程序
- 《使用 C++11 编写 Linux 多线程程序(转载收藏)》
- linux下使用汇编语言编写hello world!程序
- 一个使用Win32SDK编写Windows GUI程序的教程: "theForger's Win32 API Tutorial"
- linux下使用 qextserialport 编写串口小程序
- Linux下编写程序必要工具使用详解
- 使用 C++11 编写 Linux 多线程程序
- 如何使用 C++11 编写 Linux 多线程程序
- 使用slickedit编写wince与linux跨平台c/s程序的心得
- Linux下使用vi 编写一个c程序和java程序
- 使用Glog帮助编写Linux C程序
- 使用VC+VA编写/编译/运行/调试linux程序
- 使用 C++ 11 编写 Linux 多线程程序
- 用vs2008编写和调试linux程序 ----VisualGDB 使用教程
- [C++11 std::thread] 使用C++11 编写 Linux 多线程程序
- 使用 C++11 编写 Linux 多线程程序
- 用vs2008编写和调试linux程序 ----VisualGDB 使用教程
- linux下使用 qextserialport 编写串口程序