现在的位置: 首页 > 综合 > 正文

用MINGW编译GCC4.2.2指南

2013年09月18日 ⁄ 综合 ⁄ 共 2232字 ⁄ 字号 评论关闭

导读:
  在网上,编译GCC的方法有很多,大部份人都推荐在CYGWIN环境下进行交叉编译,这样可以可以少遇到许多困难,但是使用CYGWIN时往往需要编译许多其它相关工具才行,对于我这个懒人来说,真是不太现实,所以我开始了我用MINGW编译之旅。
  在国外似乎很早就有人开始用MINGW尝试编译GCC了,不过如你根据它的方法的话,依我试验后的经验不一定能够成功的编译出来,因为有许多提前工作,在那文档中并没有列出。下面将以GCC4.2.2为例进行
  前期准备工作:一、准备一个已编译好的GCC,我用的是TDM的GCC4.2.1(当然用它的GCC4.2.2也可以)
  二、安装MSYS和它的工具包,在MSYS安装完成以后,一般会要求指定一下你的GCC安装路径,按要求填写即可,万一你想改变了你可以在MSYS文件夹中的 /etc/fstab下进行修改。最后要说的是你可能需要从MINGW的官网上下载最新MAKE和MAKEINFO这个两个程序,后面我将会给出为什么需要它们的原因
  三、安装mingw-core、mingw-win32api、mingw-binutil
  四、编译GMP与MPFR,根据测试GMP虽然有了4.2.2版本,但是在WIN环境下无法通过编译(有高人帮我解决更好了),但是GMP4.2.1依然可以编译使用,为编译 GCC4.2.2所以MPFR必需要求使用MPFR4.2.2,在msys环境下,老惯例的三步走configre,make,make install就可以了,将编译好的相关文件复制到GCC的文件夹中,当然你可以在GCC编译时另外指定路径,不过会变得麻烦些
  五、安装GNUWIN32组件
  bison into
  http://gnuwin32.sourceforge.net/down...on-bin-zip.php
  http://gnuwin32.sourceforge.net/down...on-dep-zip.php
  下一步编译:
  其实正常来说这一步可以忽略不说,但是我就是不理解为什么在WIN环境下会变得如此的复杂?
  下面是我的configure执行脚本
  #!/bin/sh
  PATH=/f/GCC/bin:/f/msys/1.0/bin:$PATH
  ../../configure --prefix=/mingw --enable-languages=c,c++,fortran,objc,obj-c++,treelang,java --disable-nls --disable-werror --disable-win32-registry --enable-sjlj-exceptions --enable-threads=win32 --disable-libstdcxx-pch --enable-fully-dynamic-string --enable-libgomp --with-tune=generic --with-as=/mingw/bin/as.exe --with-ld=/mingw/bin/ld.exe --with-gcc --with-gnu-ld --with-gnu-as
  注意--with-as=/mingw/bin/as.exe --with-ld=/mingw/bin/ld.exe这两句是必须要的,否则在编译可能出现无法生成a.exe文件的错误,根据网上得出的资料是MSYS在文件映射方面,最好是使用UNIX下面的路径方式,如果使用DOS的路径方式很容易出现一些陌名的错误。还有如果你要编译GCC的大部份编译器,最好还是按照我上面的来写--enable-languages=c,c++,fortran,objc,obj-c++,treelang,java,因为有时候GCC配置无法正常识别你要编译的语言种类,另外GNAT自gcc4.2.0开始,我就一直没有成功过,一直提示缺少calander文件。
  接着是make,心跳吧,在我的编译历程中,这里是最容易出现各种各样奇怪的错误的,一般来说有两个方面,一个是上述配置没有做好,存在一定问题,另一个就是编译用的源文件出现问题,我发现如果你使用WINRAR来解压GCC4.2.2的源文件时,会有一个长文件名的.h文件解压后文件名出错,导致无法编译通过,我推荐使用7-ZIP,这个在多次使用过程中没有出现任何问题。
  最后一步是make install,很不幸的说,这里会存在一个问题,有时你会发现你安装一半会提示你,需要安装makeinfo和最新的make应用程序,如果你仔细观察一下你会发现GCC的CONFIGURE里面使用的是 missing makeinfo当然是不对的了,还好MINGW上已经提供了最的MSYS用MAKE和MAKEINFO,下载覆盖,然后修改GCC源文件根目录下的MAKEFILE和子文件夹GCC下的MAKEFILE,把里面的missing makeinfo替换为目录下的makeinfo就可以解决,同时不要使用mingw32-make那个程序,那个虽然是同MINGW GCC在一起,但是无法在MSYS中使用,否则会出现调用文件目录的错误,好了到了这一步,GCC4.2.2的编译全过程就结束了,希望大家用得愉快

本文转自
http://www.cppblog.com/zelsazgh/archive/2007/12/15/38549.html

抱歉!评论已关闭.