最近更新: 2006-09-08

How to use MinGW GNU GCC and with PSPad

"MinGW" 是取 Minimalist GNU for Windows 計劃之意,其目標為提供一個可在 Win32 平台上開發 Win32 native code 的 GNU GCC tools ,而非提供 Unix 程式移植到 Win32 平台之用,此即為其 Minimalist 之意。 2000年時,我曾在「安裝 GCC 2.95/Mingw32」說明過 MinGW 。不過那篇文章中的資訊已經過時了,現在 MinGW 的正式網址為 http://www.mingw.org/

2007/06/30: 更新安裝資訊。

http://www.mingw.org/MinGWiki/index.php/Install%20MinGW MinGW 雖然提了供整合安裝工具,但仍有些許問題。仍然建議手動下載與安裝。請瀏覽 File List@MinGW Download ,依個人需求下載個別套件,解壓縮到個人欲安裝的目錄下即可。建議下載 Current 版本。使用 MinGW 開發 C/C++ 程式的最小需求套件為:

  • MinGW Runtime
  • Windows API
  • binutils
  • gcc-core (for C language)
  • gcc-g++ (for C++ language)
  • make
    傳統上我們使用 make 建置專案,如果你改用 Ant ,那麼就不需下載此檔。

只需要下載 bin 的部份。 src 是原始碼。安裝時,將上述套件都解壓縮到同一目錄之下。個人經驗及網路文章所收集到的資訊顯示,安裝到 C:\MinGW 是最佳選擇。若安裝到其他目錄,常常發生問題,且各人狀況不一。依 mingw-runtime, win32api, binutils, gcc-core, gcc-g++ 的順序解壓縮,碰到檔案重複的提示時,請覆蓋過去。最後,設置環境變數 PATH 指向安裝目錄,如下列所示。若你並非安裝在 C:\MinGW ,請依實際遇到的狀況調整環境變數的設置。各人的狀況不一致。

SET PATH=%PATH%;C:\MinGW\bin;

在 MinGW 中,有提供一套最小化的 unix shell 擬似執行環境,稱為 MSYS (Minimal SYStem) ,這並非必要套件。純粹只是需要一套 C/C++ compiler tools 的使用者,並不需要下載它。如果是打算將原本在 unix 環境下的程式移植到 win32 的使用者,也不建議用這套工具, Cygwin 更合適。 Cygwin CD 中也包含了 MinGW 套件,取得 Cygwin CD 者,就不需要另外再安裝 MinGW 。

我們一般使用 gcc 即可完成編譯與連結工作,通常不用區分 C 或 C++。但若你在編譯 C++ 程式時發生狀況,依 MinGW 文件說明, C 語言程式使用 gcc 編譯,而 C++ 語言程式則用 g++ 編譯。

個人經驗:我試著用 gcc 建置 C++ 語言程式,在進行連結工作時,無法正確連結所需的 libraries/object files 以致發生符號未定義的錯誤。我測試發現,用 gcc 和 g++ ,皆可完成 C 和 C++ 的編譯工作; gcc 只能完成 C 語言程式的連結工作,但 g++ 卻又可完成 C 和 C++ 語言程式的連結工作。

底下提供一個範例程式,供測試 MinGW 是否安裝無誤。

win_hello.c

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	PSTR szCmdLine,
	int iCmdShow)
{
   MessageBox (NULL, "Hello", "Hello Demo", MB_OK);
   return (0);
}

"C:\Program Files\MinGW\bin\g++" -o win_hello win_hello.c -mwindows

PSPad 編輯器的使用者,可以參考 Borland C++ 5.5 Compiler with PSPad 設定編譯器的內容。編譯器指向 gcc.exe ,而「參數」則輸入-o -o %Name% %File%。輔助說明可用 CHM Help Files 此版。

Eclipse/CDT 的使用者,請參考 C/C++ development with the Eclipse Platform

相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/2119992.html