用MINGW编译GCC4.2.2指南

来源:互联网 发布:指尖网络是干什么的 编辑:程序博客网 时间:2024/06/06 11:37

在网上,编译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

flex
http://gnuwin32.sourceforge.net/down...ex-bin-zip.php

libtool
http://gnuwin32.sourceforge.net/down...ol-bin-zip.php

libiconv
http://gnuwin32.sourceforge.net/down...nv-bin-zip.php
http://gnuwin32.sourceforge.net/down...nv-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的编译全过程就结束了,希望大家用得愉快

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为手机wifi慢怎么办 浏览器打不开显示内存不足怎么办 华为电脑黑屏了怎么办 华为电脑关不了怎么办 xp系统不能上网怎么办 华为手机激活码怎么办 华为系统删了怎么办 来电响铃时间短怎么办 华为p10刚开机怎么办 盒子支付不到账怎么办 小米5x录完音乱怎么办 华为返回键失灵怎么办 手机退出键失灵怎么办 公司座机被骚扰怎么办 手机号被拦截了怎么办 收不到话费短信怎么办 移动信息收不到怎么办 电话被拦截了怎么办 华为屏幕有广告怎么办 手机屏幕突然出广告怎么办? 电脑中病毒网络怎么办 手机被短信轰炸怎么办 手机桌面变暗了怎么办 oppo音乐不能用怎么办 华为p7更新不了怎么办 短信文件夹没了怎么办 手机安全拦截了怎么办 遇到信号屏蔽器怎么办 电脑老是叫更新怎么办 安卓 启动器停止怎么办 忘记手机pin密码怎么办 华为y635cl00太慢怎么办 ipad玩王者卡怎么办 手机天气不更新怎么办 手机权限被拒绝怎么办 小米平板相册打不开怎么办 小米平板打不开了怎么办 oppo照片消失了怎么办 被别人标记电话怎么办 点了病毒链接怎么办 点开有毒链接怎么办