Electronic Joint Business

Solution for E-Business

使用MinGW64编译GCC 4.6和4.7

gcc 4.6.0简介 GNU在3月25日正式放出了GCC 4.6.0的Tarball,不过在GNU的站点上也可以下载到GCC 4.7的Snapshot,你可以从GCC SnapShot站点, 下载到最新的版本。GCC 4.7的编译过程和GCC 4.6一致。 GCC 4.6支持以下这样一些新特性。除了支持一些新的鸡肋语言,比如Go,主要更新亮点有: 大大改进了过程间分析和链接时优化。 增加了128位浮点数支持,这个在科学计算领域应该很有用,X86和安腾系的芯片首先得益。 一些详细的细节包括: 增加更强力的编译优化选项-ofast,这个选项除了打开-O3的所有优化外,还开启了所有能开启的优化,以获得更好的性能,如-ffast-mast优化 改进链接时优化(LTO): ◦全局可扩展优化器已经足够稳定。打开LTO后会默认开启此优化。该优化器可以自动分割成几个并行的编译过程,可以用选项-flto=n指定并行编译进程个数。 增加-fstack-usage选项。编译器可以输出程序的栈使用信息 你还可以参考GCC 4.6的release notes,该页面上有更详细的信息。 准备工作 为了开始编译GCC,你需要安装一份MinGW64的拷贝和MSYS。我们首先安装MinGW64,将其压缩包解开即可,在本文中MinGW64为C:\MinGW64。 MSYS是Windows下一个支持Unix Shell的小工具,可以在MinGW站点上下载,安装的时候会询问MinGW路径,输入C:\MinGW64即可。 你还需要检查一下MSYS目录中的/usr/local路径,里面可能已经安装了一些类库,那么建议你先将local目录改名,例如改为local.old,避免这些旧的类库对编译过程产生干扰。这样我们就得到一个干净的工作环境。此外你还需要确认一下,Bison、Flex和autoconf等等工具是不是已经存在你的系统中了,不在的话,在编译开始之前你需要先下载或者编译这些工具。建议安装一份Gnuwin32的工具集,虽然版本有点老旧,但是包括了大部分工具,而且小巧。解压后将其加入到系统路径当中。 打开MSYS环境,输入一下GCC -v,确认MinGW64已经配置成功,输入一下flex或者bison,确认gnuwin32工具集在路径当中。 第一次编译GCC 我们将第一轮编译的结果保存在C:\tools目录下,先建立该目录,然后更新C:/MSYS/1.0/etc目录中的fstab文件,所有的内容如下: C:/MinGW64 /MinGW C:/tools /tools 重新启动MSYS环境,用ls tools/验证一下是否/tools目录已经被正确映射。 下载GCC-4.6.0.tar.bz2和binutils-2.21.tar.bz2,将其分别解压到C:/MSYS/1.0/home/目录下。GCC依赖于一些第三方类库,主要是gmp,mpfr和mpc,此外还有一些可选的类库,比如ppl和cloog。在第一轮编译中,我们只需要gmp-5.0.1.tar.bz2, mpfr-3.0.1.tar.bz2和mpc-0.9.tar.bz2这三个包,解压后将它们拷贝到gcc-4.6.0的源代码目录下,并将其目录名分别改名为gmp,mpfr,mpc。 第一轮编译 首先开始编译binutils: ./configure –target=x86_64-w64-mingw32 –build=x86_64-w64-mingw32 –disable-werror –disable-nls –prefix=/tools make && make install 之后我们需要一个运行时,一般在Linux下需要的是Linux Kernel的头文件和Glibc库,在Windows环境中,这部分由mingw64运行时来负责,(MinGW64运行时其实就是Windows VCCRT和部分SDK API的包装类),在Mingw64的官方站点上可以下载最新的snapshot MinGW-W64 […]

, ,

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.