久闻gcc的大名,早就想自己动手搭建一个Windows下的gcc开发环境,可以学学编译命令,也可以在想测试一段简单的代码是否正确时不用打开庞大的Visual Studio或VC6.0。而gcc原本是在Linux系统下的编译器,若要在Windows下使用需要MinGW的帮助。MinGW是一个开源项目,目的就是打造一个原生Windows下最小的gcc开发环境。
MinGW, a contraction of "Minimalist GNU for Windows", is a minimalist development environment for native Microsoft Windows applications.
所以我们这里所用到的所有软件,包括gcc编译器本身,都需要从MinGW官网上下载。下面就一步步介绍怎样搭建这个gcc的开发环境。文章末尾提供最终配置好的MinGW打包下载。
*Jan 8, 2013 更新:可解压到任意路径运行(路径不包含空格)
【@.1 软件准备】
一. 使用官方自动下载程序
@->MinGW官网提供了一种自动在线下载安装的gui小程序,可以在这里下载。这个程序只需要简单的一步步跟着提示,就会自动下载每个组件的最新版本并且安装在电脑里面。但麻烦的是,我用这个程序下载时,下载时间长,而且老是下载失败。所以逼着我硬着头皮看采用手动下载单个组件再组装起来的方法(其实也不难)。所以采用这种方法的话这里就不重复了。
二.手动下载组件
@->到MinGW官网的这个页面 HOWTO Install the MinGW (GCC) Compiler Suite,往下稍微拉一拉就可以看到详细的下载组件说明。需要注意的是,各个组件都有各自的版本要求,所以我并不推荐到MinGW的sourceforge下载页面自己下载各个组件然后配置,当然如果你有时间的话可以研究下每个组件的版本要求然后自己下载最新版本的组件进行更新,如果自己搞了半天把组件下载下来了MinGW不能用那就有的抓狂了。
@->还是刚才那个 HOWTO Install ... 页面,下面的Manual Install一段就是我们需要的组件。首先下载下面几个组件,注意左右蓝色的链接都要下载,包括dev和dll,这里共计20个压缩包。↓
@->往下看是gcc编译器的核心下载选择。注意到下载时已经下载了C编译器核gcc,之后可以再选择下载gcc-g++和gcc-objc就可以编写C++和Objective C了。你也可以下载其他编译器玩玩,我下载Objective C就是想看看苹果御用的这个语言怎么怎么样,虽然到现在也没时间研究。要注意的是,这里的所有gcc编译器都不一定是GNU官网放出的最新版本,但是鉴于如果自己上GNU下载了最新版后,还要研究怎么用MinGW的一套方法进行重新编译,再融合到自己的组件中,所以我这里放弃了。不过目前MinGW这里提供的gcc是4.6.x版本,还是比较新的,对于个人编程来说足够了。这里的bin和dll都要下载,共计4个压缩包。↓
@->再往下,可选择一些扩展功能组件。这里我选择了前四条。第一条是debug时可以用,不过目前我觉得在命令行里面手动写在哪里设置断点比较不习惯,还是留给日后Eclipse配置时用吧。第二条是可以使用make命令,可以学习下makefile的编写。第三条MinGW-Utilities提供了一组实用工具。第四条是大名鼎鼎的MSYS,可以在Windows下打开一个命令窗口用Linux命令进行一些列操作。最后一项我没下载。共计4个压缩包加1个可执行文件(MSYS)↓
@->最后再下载一个documentation就结束了,方便查看一些手册。↓
@->最终的文件载共计30个,将他们放在同一个文件夹下。组件是多了点,我提供了一个包含这原始的30个组件的压缩包单独下载,可以对比一下。注意到这里还没结束,接下来还需要进行解压和配置工作。
【@.2 组件配置】
@->下载好的组件一共29个压缩包和1个可执行文件(MSYS),解压这29个组件到同一个文件夹。这里我推荐用7-zip解压,若使用WinZip的话可能不能同时解压一些文件。这里解压需要两次,都解压到同一个文件夹即可。若解压过程中提示有重复文件,选择直接覆盖所有即可。解压好的最终文件如下图↓
@->编译器在mingw32\bin下面,所以这时只需在系统环境变量PATH中添加其路径即可,不过这并不是我所建议的方法,如果只需要一个小的开发环境,可以不必向系统变量里面添加一条新路径。当然日后若要用Eclipse配置使用gcc时的时候需要设置系统变量。不过那是后话。
*Jan 8, 2013 更新:可解压到任意路径运行(路径不包含空格),所以下面方法可能过时,下载文末压缩包可对比。
@->在C盘根目录下新建一个MinGW文件夹,将之前解压得到的文件拷贝到C:\MinGW下。在MinGW下新建文件夹"solutions_apo",之后在MinGW下新建一个批处理文件'_Start_apo.bat',写入下列内容:
@echo off REM REM *** Written by Apollius; Oct.19 2012 *** REM *** Set environment. Functional only in current cmd window *** set PATH=C:\MinGW\bin;%PATH% cd C:\MinGW\solutions_apo echo ************************************************* echo * -GCC ENVIROMENT SET SUCCESSFULLY!- * echo ************************************************* REM *** END ***
保存后,在MinGW目录下新建一个快捷方式,在键入项目的位置中输入以下内容:
%SystemRoot%\system32\cmd.exe /K C:\MinGW\_Start_apo.bat
下一步,名字取为'Start_apo.exe',保存↓
这样,每次想使用gcc时,只需单击'Start_apo.exe',就可以将gcc编译器的路径暂时存到系统PATH里面,当推出这个cmd窗口时会自动清除系统路径信息。
@->'solutions_apo'文件夹里可以放置我们的工程文件。下面我们来实验一个hello world程序。'solutions_apo'目录下新建一个hello_world文件夹,在其中新建一个main.c,写入如下代码:
#include <stdio.h> int main(int argc, char **argv) { printf("***************************\n"); printf("* Hello MinGW! *\n"); printf("* apollius *\n"); printf("***************************\n"); return (0); }
保存退出。回到刚才MinGW文件夹下,双击'Start_apo.exe',依次键入以下内容:
cd hello_world
gcc -o fin.exe main.c
则gcc可以编译。如果设置没有问题,将会稍微停顿一会儿重新显示命令行提示。之后键入
fin
即可看到打印出来的文字了↓
好了,是不是很简单,不需要建立复杂庞大的工程文件夹,只需要一步步自己手动添加文件即可。
@->最后,提供一个最终建立好的工程文件打包下载见文章末尾,下载好后解压到C盘根目录。按照前面的步骤,若想放在其他目录下的话需要自己更改'_Start_apo.bat'文件中下面语句
set PATH=C:\MinGW\bin;%PATH%
改为自己对应目录。
*Jan 8, 2013 更新:可解压到任意路径运行(路径不包含空格),所以这里可不用修改
并且将Start_apo.exe快捷方式的属性修改为你_Start_apo.bat'所在目录。当然这也是这个方法比较麻烦的地方,如果有更好的方案能解决这个问题让放到任何路径都可以用的话也欢迎跟我交流(我的更新已经实现了)。
@->最后,你可以尝试自己编写makefile来建立一个自己的工程,当工程项目比较多,所包含头文件、库文件、源文件比较多时必须得编写makefile来组织编译链接过程了。不过,当工程比较大时我宁可用Eclipse来调用这个gcc进行项目编写。这也是我的另一篇博文讨论的内容。
【@.附件下载】
*Jan 8, 2013 更新:可解压到任意路径运行(路径不包含空格),双击压缩包内Launch.bat即可
@->MinGW_20130109.7z *解压放在任意目录 *无需设置系统环境变量PATH
@.[FIN] @.date->Nov 21, 2012 @.author->apollius