XP下MinGW的C\C++编程环境安装与升级教程

前言

  当你搜到这篇文章的时候,假设你已经对C和C++有个了解了,而且已经用命令行编译过自己的第一个程序“Hello,world!”,请不要再问我VC和GCC有什么分别,也不要问我命令行怎样使用。在写这篇指导性的文章前,我上GOOGLE和百度逛了一遍,发现关于在WINDOWS下建立GCC的C/C++编程环境的文章根本没有几篇,如何在WINDOWS下升级GCC的更加少得可怜,至少在写这篇文章之前中文的一篇也没有搜到。所以,希望我这篇教程能起到抛砖引玉的效果,有经验的老鸟可以忽略此文了。GCC是GNU的重要组成部分,在标准化方面做得很不错,能做到兼容性和可移植性都很好的说。个人认为是学习和应用标准C/C++的最合适的平台。

  为免走弯路,以下请严格按照我下边所说的步骤去做。


Ⅰ - 下载并安装编译用的WINDOWS下的GCC:MinGW

  首先我们需要安装GCC的WINDOWS版本,通常会是比较旧且稳定的GCC发行版本,有些工具已经释出新版本,我是故意用较旧版本,让大家知道如何通过编译源代码获得最新的GCC发行版本。我的选择是MinGW环境,所以我们要下载以下的二进制包进行安装:

  GNUWin32 project:
  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 project:
  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”文件夹C:\GCC\,把上边的所有压缩文件连目录一起解压到GCC目录里边,遇到要覆盖文件夹放心覆盖吧,注意的是libiconv包和libintl包只要把里边子目录BIN中的所有库文件*.DLL解压到“BIN”目录中就可以。

  完成后,把C:\GCC\BIN添加到PATH的环境变量中去,在桌面用右键选我的电脑->属性->高级->环境变量,编辑Path在变量值后添加“;C:\GCC\BIN”,注意前边要加分号。

  注意:解压后,到C:\GCC\BIN目录中把M4.exe删除,在接下来要安装的MSYS中已经包含一个专用的M4,如果你并不打算升级,就这样使用的话,也可以不删,那么你今天的任务也到此结束,你可以用这个环境在命令行中编写你的C\C++程序了,那么,先来一个“Hello world!”吧,哈哈。

Ⅱ - 安装MSYS

  我们需要建立一个完整功能的MSYS环境,实际上MSYS是一个仿POSIX系统,跟LINUX下的BASH大部分命令用法差不多,再简单点说就是一个跟CMD环境差不多的命令行只是命令有点区别,命令行学习GNU前的必修课,不懂的使用命令行的朋友请自行上GOOGLE搜索相关教程,DOS也好,BASH也好,不要成为只会用IDE的小白,要明白编译器在做什么,最好先学习一下命令行。

  现在你要做的就是从http://www.mingw.org上下载并安装一个打包的安装程序。

  下载地址为:http://prdownloads.sourceforge.net/mingw/MSYS-1.0.10.exe

  特别强调:为了清晰你的思路,我建议你安装的时候什么也不要动,一切按照默认的设置让其安装在C:\根目录的默认目录下。安装到最后的时候会叫你确认一下系统有没有安装MinGW一些设置,不用管他,有[YN]按N就会跳去,否则更新的时候MSYS会让MAKE找错MinGW的默认安装路径而把新编译的程序覆盖到GCC目录中,而不是安装到MSYS的MinGW目录中。

  进入MSYS键入“gcc -v”将会列出现有预装的GCC版本。

Ⅲ - 升级和安装GCC的工具

  安装MSYS后,进入MSYS你会发现一个叫MinGW的文件夹,里边空空如也,不用急,我们获取最新的GCC源码后,编译得到的二进制文件就会安装到这里。

  首先,先把刚才下的两个文件w32api-3.7.tar.gz和mingw-runtime-3.10.tar.gz两个文件连目录解压到里边“c:\msys\1.0\mingw”,还有binutils这个工具集,如果你嫌麻烦,可以直接下载一个最新版解压到里边去,如果你想试试自己编译这个工具集,就跟着我走吧。

  到http://ftp.gnu.org/gnu/binutils/下载最新的源代码,目前为binutils-2.17.tar.bz2。

  在MSYS环境下创建工作目录,命令如下:

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

  把下载好的binutils-2.17.tar.bz2放到SOURCE目录中,解压缩命令如下:

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

  解压后进入build目录进行编译

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

  把binutils配置,编译和安装在/mingw下:

# ../../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

  现在你可以去做其他事情了,编译要等一段长时间才能完成,你可以去冲咖啡,也可以像我一样,拿起GAMEBOY找WARIO大叔玩去。

  编译完成后,我们只要运行安装命令就好:

# make install

  到MinGW下看看bin目录中是否多了我们刚才编译的程序?

  继续安装GCC,升级编译器,当然我这里只升级和安装C和C++的编译器,如果你需要,可以自己安装其他编译器如JAVA,详细的内容可以参考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

  像刚才一样把源代码包复制到SOURCE文件夹中解压
# cd /gcc-work/source
# tar jxf gcc-core-4.1.1.tar.bz2
# tar jxf gcc-g++-4.1.1.tar.bz2

  然后到BUILD目录中创建GCC目录

# 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
# make install

  在那以后你的新鲜出炉的GCC编译完成并可以使用了,是不是很兴奋,去看看有什么新特性吧,哈哈。

  另外,不要忘了把PATH指向新的GCC的BIN环境哦。

  还有还有,还可以安装一下其他的工具,比如make的最新版等,最后示范一个

http://ftp.gnu.org/gnu/make/make-3.81.tar.bz2

  复制解压,驾轻就熟了吧,呵呵:

# cd /gcc-work/source
# tar jxf make-3.81.tar.bz2

  然后进入BUILD创建工程目录:

# 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

  写在最后,可能初学者会对编译时那些长长的尾标感到恐惧,努力吧,其实看完帮助文档后,就会很容易理解那些尾标是作啥用途的,GCC是强大的标准的编译工具集,并不局限于学习,而且是编写一些夸平台程序的最佳选择。在这里向想学好GNU的大家推荐一个好PAGES,lyanry的小站,http://lyanry.googlepages.com/,在里边你可以跟他一起一步步的学习哦……我也暂时只写这么多了。