MINGW GCC 4.3.0 安装与配置(解决CREATEPROCESS问题)

首先,下载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程序了^_^

你可能感兴趣的:(process)