首先,下載Mingw TDM 4.3.0版本
http://www.tdragon.net/recentgcc/
有兩種選擇
GCC 4.3.0-tdm-2 (Default SJLJ exceptions) 和 GCC 4.3.0-tdm-2 With DW2 Exceptions
可以根據SJLJ or DW2 (Dwarf-2) 異常模型來選擇需要下載的版本,通常情況下win32平臺下選擇SJLJ(set jump long jump)模型
然后還需要去Mingw官網下載
binutils
http://downloads.sourceforge.net/mingw/binutils-2.18.50-20080109-2.tar.gz
mingw-runtime (mingw-runtime-3.14.tar.gz, 494KB)
http://downloads.sourceforge.net/mingw/mingw-runtime-3.14.tar.gz
w32api (w32api-3.11.tar.gz, 1.55MB)
http://downloads.sourceforge.net/mingw/w32api-3.11.tar.gz
也可以選擇安裝以下組件
mingw-utils
http://downloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz
mingw32-make(可以選擇最新的mingw32-make-3.81-20080326-2)
http://downloads.sourceforge.net/mingw/mingw32-make-3.81-2.tar.gz
gdb(可以選擇最新的6.8試驗版)
http://downloads.sourceforge.net/mingw/gdb-6.6.tar.bz2
把這些東西都下載下來,然后解壓到不同的目錄,每個目錄里面大概都會有bin,include,lib,man這樣的目錄,要做的就是合并它們,也就是拷貝到同一個目錄里面,注意可能有些文件會重復,一般來說GCC 4.3.0 TDM包里面的文件比較重要,不要用其他的包里面的文件覆蓋了它
然后就可以得到一個完整包含gcc,g++,binutils,gdb,make等的目錄了,此時,在windows環境變量中的path變量里面添加該目錄的bin子目錄,就可以在cmd窗口中調用gcc和g++進行編譯了。如果你不想污染了環境變量,也可以寫個bat:(假設你的mingw目錄是C:\mingw\bin)
set path=C:\mingw\bin;%path%"
現在還沒有結束,需要進行兩個地方的設置
1 make
mingw官方提供的make工具,名稱不是簡單的make,而是mingw32-make.exe,把它改名成make.exe或者復制一份為make.exe都可以
2 gcc: CreateProcess: No such file or Directory 錯誤
這個問題在google里面很多人發問,但是沒有一個完整的解答,下面給出一個完整的解答
產生這個錯誤有兩個原因:
第一是gcc無法找到安裝目錄里面的libexec目錄里面的工具,通常這些工具包括cc1.exe,cc1plus.exe,collect2.exe,它們通常存放在:
安裝目錄\libexec\gcc\mingw32\4.3.0
第二是gcc無法找到mingw目錄里面binutils的工具,它們通常存放在
安裝目錄\mingw32\bin
這兩個目錄的名字并不完全固定,根據不同組織編譯的gcc各有不同,比如mingw官方編譯的gcc4.3.0 alpha,上述目錄就是
安裝目錄\gcc\i386-pc-mingw32\4.3.0
而官方提供的binutils包里面是
安裝目錄\i686-pc-mingw32\bin
只要這兩個地方沒有設置好,就可能導致CreateProcess錯誤,那么,有沒有什么好辦法能夠確定這里應該怎樣命名呢?辦法是用16進制編輯器打開gcc.exe,搜索GCC_EXEC_PREFIX,當搜索到該字符串(不止一個)時,觀察后面是否出現版本號4.3.0,如果出現,后面緊接著的就是路徑,如果是mingw32那么上面的命名就應該是
安裝目錄\libexec\gcc\mingw32\4.3.0
安裝目錄\mingw32\bin
如果是其他的例如i686-pc-mingw32,那么名稱相應的變為
安裝目錄\libexec\gcc\i686-pc-mingw32\4.3.0
安裝目錄\i686-pc-mingw32\bin
好了,可以測試一下你的hallo world程序了^_^
我用gcc-part-core-4.3.0-20080502-2-mingw32-alpha-bin.tar.gz
和gcc-part-c++-4.3.0-20080502-2-mingw32-alpha-bin.tar.gz
安裝后能正常用gcc編譯c版本的hello,world!但不能用g++編譯c++的<iostream>的hello world,一編譯時就不停的刷屏,請問怎么辦?我用的vista!
我用的是binutils-2.18.50-20080109-2
mingw-runtime-3.14
w32api-3.11
mingw32-make-3.81-20080326-2
我測試過了,把
binutils-2.18.50-20080109-2
mingw-runtime-3.14
w32api-3.11
mingw32-make-3.81-20080326-2
解壓出來
合并到gcc的目錄里面就可以了,而如果你沒有合并,尤其是沒有合并mingw runtime,那么編譯的時候要刷屏的
int main()
{
std::cout << "Hello!" << std::endl;
return 0;
}
_________________________
我的順序是:
1.在c盤建立MinGW文件夾;
2.解壓binutils-2.18.50-20080109-2
mingw-runtime-3.14
w32api-3.11
mingw32-make-3.81-20080326-2
gcc-part-core-4.3.0-20080502-2-mingw32-alpha-bin.tar.gz
gcc-part-c++-4.3.0-20080502-2-mingw32-alpha-bin.tar.gz
到c:\MinGW
3.系統變量PATH加入bin目錄的路徑
用gcc.exe正常,用g++.exe編譯c風格的正常,比如<cstdio>里的printf("Hello!\n")
但用g++.exe編譯上面那個C++的就一直刷屏!
解壓安裝文件的時候只有一個lib目錄里的libiberty.a重復,我覆蓋與不覆蓋試了兩次,但結果都一樣!
所有的都合并了!
下面是我自己整理的包.
mingw c/c++ need packages:
1***** binutils
2***** mingw-runtime
3***** w32api
4***** mingw-utils
5***** mingw32-make
6***** gdb
7***** gcc-core
8***** gcc-g++
能不能把過程說明+程序集打包放網盤呢?
你去TDM下一個大包就OK了,該有的基本上都有了。