利用mingw编译最新的gcc

声明:
本主翻译自mingwwin32邮件列表上的文章。原文地址如下:
http://gcc.gnu.org/ml/gcc-help/2006-09/msg00000.html

------------------------------------------------------------
我写了一个在WINDOW32平台上,利用mingw编译最新的gcc(4.1.1)的指南。

readme.lst 请愿凉我不太地道的英语。

I    - 建立mingw工作环境
II   - 安装预编译的gcc二进制文件
III  - 创建宿主环境
IV   - 编译,安装gcc
V    - 安装其它工具
VI   - 成功


----------------------------------------
I 建立mingw环境

最先需要的当然是一个功能完善的mingw环境。这个工作可以通过下载并安装mingw发布的二进制安装包完成。下载地址:http://www.mingw.org

msys 1.0.10: http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download

为了清楚理解, 我假设你把msys安装到了C盘C:/
这样,msys就将在如下位置: c:/msys

----------------------------------------
II 安装预编译的gcc二进制文件

现在我们已经有了一个基本的工作环境msys了。我们还需要安装gcc的某个版本,以利用它来编译得到最新的gcc版本。下载并安装下列文件。

来自GnuWin32工程:
bison:
http://prdownloads.sourceforge.net/gnuwin32/bison-2.1-bin.zip?download
flex:
http://prdownloads.sourceforge.net/gnuwin32/flex-2.5.4a-1-bin.zip?download
libiconv:
http://prdownloads.sourceforge.net/gnuwin32/libiconv-1.9.2-1-bin.zip?download
libintl:
http://prdownloads.sourceforge.net/gnuwin32/libintl-0.14.4-bin.zip?download

来自MinGW工程:
win32api:
http://prdownloads.sourceforge.net/mingw/w32api-3.7.tar.gz?download
mingw-runtime:
http://prdownloads.sourceforge.net/mingw/mingw-runtime-3.10.tar.gz?download
binutils:
http://prdownloads.sourceforge.net/mingw/binutils-2.17.50-20060824-1.tar.gz?download
gcc-core:
http://prdownloads.sourceforge.net/mingw/gcc-core-3.4.5-20060117-1.tar.gz?download

现在开始安装。先在C盘下创建一个目录gcc, 后面将所有的文件都解压缩到这里。当然你可以下创建其它任何名称的目录。将所有文件都解压缩到gcc目录中。其中libiconv和libintl只需要解压缩其中的包含了DLL的bin目录就行了,并将bin目录中的内容都复制到gcc/bin目录中。

重要提示:在解压缩完成后,到gcc/bin目录中,删除其中的m4.exe文件(msys使用另一个m4程序,它包含中msys的安装中)。

完成后,将c:/gcc/bin路径加入到系统的PATH路径中去。

注意,我们没有使用gcc-g++包, 这是因为编译gcc不需要C++支持。

这时候,可以测试一下安装是否正常了。打开msys并输入:
#gcc -v

这里输出的信息就是预编译gcc的信息。如果一切正常,就进入下一步。

----------------------------------------
III 创建GCC宿主环境

在安装前,我们要先建立一个宿主目录,这个目录中将装载gcc新版本的二进制文件和其它文件。这一步必须在开始安装之前完成,因为在编译过程中,这里的文件还是要使用的。

假如你将msys和gcc安装在C盘下,那你的目录结构应该如下:

c:/
 |
 |--fold1
 |--fold2
 |--gcc            <= 这儿安装的是预编译的gcc
 |--msys        <= 这儿是msys环境
 |   |
 |   |--bin
 |   |--doc
 |   |--etc
 |   |--home
 |   |--mingw        <= 编译的gcc将要安装到这儿
 |--foldn
 |

现在来安装gcc的宿主环境。(c:/msys/mingw)

先安装mingw-runtime, binutils, win32 api。 只需要将文件直接解压缩到c:/msys/mingw下就行了。对于binutils,你可以直接使用下载的二进制包,或自行编译。如果要自行编译binutils,请参考下章的说明。

----------------------------------------
IV 编译安装gcc

在msys下,创建一个工作文件目录,在编译过程中的临时文件和源文件都可以放到它下面。

#cd /
#mkdir gcc-work && cd gcc-work
#mkdir {build, source}

编译binutils:
如果要编译binutils,下面是操作方法。如果不编译,可以直接跳过此节。

下载源文件:
http://ftp.gnu.org/gnu/binutils/binutils-2.17.tar.bz2

复制文件到源目录(刚建立的工作目录中:/gcc-work/source)并解压缩。

#cd source
#tar jxvf binutils-2.17.tar.bz2
#

到编译目录中,创建一个临时目录,编译后的binutils放在这儿。

#cd ../build
#mkdir binutils
#mkdir binutils
#

配置、编译、安装

#../../source/binutils-2.17/configure --prefix=/mingw --host=mingw32 --target=mingw32 --program-prefix="" --with-lib-path=/mingw/mingw32/lib:/mingw/lib:/usr/local/lib:/lib:/usr/lib --with-gcc --with-gnu-as --with-gnu-ld --disable-nls --disable-shared
#make CFLAGS="-O2 -D_USE_CRTIMP -fno-exceptions" LDFLAGS=-s
#

这些标志参数都是自解释的。你也可以运行configure --help来得到具体的解释说明。不过请特别注意一下--with-lib-path参数。它决定了binutils工具,象ld在什么地方找到共享库。因为我们要安装到mingw下,所以路径的前两个都以/mingw开头。如果你因为某些原因要改变这个前缀,请记住一定要改这个标志。如果还有其它路径要使用在msys下,也可以加入其中。

回车!!!

现在嘛,是喝口茶,休息一下了:-)
整个过程会持续几分钟。

编译完成后,就是安装了,很简单:

#make install
#


**安装gcc
最期待人心的时候终于来了。开始编译gcc啦。 gcc是自编译的,所以一点儿也不要担心什么。

首先,下载源文件。这里我只准备安装C和C++。你可以自行下载其它语言包,并小修改一下命令行参数就可能对其它语言进行支持了。
下面地址可以得到gcc的配置说明:
http://gcc.gnu.org/install/configure.html

源代码下载:
gcc-core: http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/gcc-core-4.1.1.tar.bz2
gcc-g++:  http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/gcc-g++-4.1.1.tar.bz2

下载到源文件目录,并解压缩:
#cd gcc-work/source
#tar jxf gcc-core-4.1.1.tar.bz2
#tar jxf gcc-g++-4.1.1.tar.bz2

到编译目录中,创建一个临时目录:

#cd ../build
#mkdir gcc
#cd gcc
#

配置:

# ../../source/gcc-4.1.1/configure --prefix=/mingw --host=mingw32
--target=mingw32 --program-prefix="" --with-as=/mingw/bin/as.exe --with-ld=/mingw/bin/ld.exe --with-gcc --with-gnu-ld --with-gnu-as --enable-threads --disable-nls --enable-languages=c,c++ --disable-win32-registry --disable-shared --without-x --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug
# make CFLAGS="-O2 -fomit-frame-pointer" CXXFLAGS="-mthreads -fno-omit-frame-pointer -O2" LDFLAGS=-s bootstrap2

bootstrap进程在gcc的文档中得到推荐,它可能使生成的代码更加优化。在bootstrap时,将产生一个编译器,它用来编译别一个编译器,而这个编译器又可以编译另一个。。。。如此往复。bootstrap2指在最终版本产生前,将产生两个预版本。

很明显,这样做会很耗时,但将会产生更优秀的结果。如果你不想要一个bootstrap的版本,可以在中去掉bootstrap2参数。

现在可以享受一个比较长的时候啦。编译会是很漫长的一个过程。编译完成后,简单的执行:

#make install
#

就OK了。

现在你自己版本的gcc已经安装成功了。 你可以删除掉工作目录和前期安装的预编译gcc版本。记得把新安装的gcc的路径加入PATH环境变量中。

----------------------------------------
V 添加其它工具

gcc新版本已经安装成功了。我们可以再添加些其它开发工具。我准备加入gdb和make.

下载预编译的gdb版本:
gdb 6.3-2: http://prdownloads.sourceforge.net/mingw/gdb-6.3-2.exe?download

将它安装到c:/msys/mingw

(我自己成功了一个6.5版本的gdb,可惜的是不支持原始的pe程序结构。所以另一个好的选择就是上面所述的,安装预编译版本)


安装make:
事实上,msys本身就带有一个make,但是如果你不打算在以后使用msys,而又要通过Makefile来配置你的工程。那最好还是安装一个自己的make.

可以通过直接解压缩文件到c:/msys/mingw来完成make的安装。文件下载地址是:
http://prdownloads.sourceforge.net/mingw/mingw32-make-3.81-1.tar.gz?download

或者自己编译。源代码地址:
make 3.81 source: http://ftp.gnu.org/gnu/make/make-3.81.tar.bz2

复制文件到源代码目录:
# cd /gcc-work/source
# tar jxf make-3.81.tar.bz2

进入工作目录,并创建临时文件夹:
# cd ../build && mkdir make
# cd make

编译:
# ../../source/make-3.81/configure --prefix=/mingw --target=mingw32 --program-prefix="" --disable-nls --disable-dependency-tracking
# make CFLAGS=-O2 LDFLAGS=-s
# make install

----------------------------------------
VI 快乐的开发程序吧

现在你可以使用最新版本的gcc来开发自己喜爱的程序啦。享受吧,朋友们!!!

上述的编译过程在winxp/win2000上都成功了。在其它版本上应该也会成功,如win98/ME/NT/2003/Vista.
最最新的gcc通过上述的步骤也已经成功安装了。

Marcelo A B Slomp
mslomp^at^linuxmail^dot^org

View this message in context: http://www.nabble.com/Problem-in-Install-gcc-on-Windows-XP-tf2194467.html#a6090797
Sent from the gcc - Help forum at Nabble.com.

----------------------------------------
whiteear
编译完成
2006-11-06
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值