2024年3月6日发(作者:)

给c/c++语言的初学者

本文旨在介绍一个C/C++编译器:MinGW(也可编译fortran)和一个编程工作平台:Eclipse 的安装和使用

本文是写给非计算机专业c/c++的初学者

本文作者层次有限,在专业人士看来我废话半天就是在说很简单的事情。。对有些问题理解还较浅薄,有出纰漏的地方望专业人士指教。。。

Eclipse和MinGW是什么?

Eclipse是一个开发平台,姑且理解为一个可以给你敲程序的图形界面。他本身不具有编译能力,只是方便你写程序,比如把不同意义的语句显示为不同颜色等等。Eclipse不仅可以用来写c,也可以写java等别的程序。

MinGW是编译器,包括了c/c++,甚至还有fortran(我最新发现)的编译器。编译器就是个程序,没有任何图形界面,你运行他的办法就是用命令行(cmd),给他一个f.c,他编译过之后给你一个

其实要编一个c程序,可以用windows自带的记事本写一段程序,然后把后缀名由.txt改成.c,交给MinGW编译,可以完全不用Eclipse。

Eclipse+MinGW:

用记事本写程序从理论上完全行得通,当然没人会这么做,因为用起来很麻烦,没有工作空间,出错了难找,许多设置要纯手工完成。所以用Eclipse帮我们省了很多事情,(VC就是帮你省了太多事情以至于你自己都不知道后台在干嘛)

所以Eclipse+MinGW的意思就是用eclipse来写程序,写好了,我们点个编译按钮,eclipse就把MinGW找来编译,如果编译成功,eclipse就把结果显示给你看,如果MinGW说程序出错了,哪里哪里错了,eclipse就把MinGW的原话告诉你,并且在界面里把错误的语句标上记号,然后你就可以用eclipse来调试,eclipse就让MinGW一行一行运行„„

讲的比较浅,但差不多就是这样,先这样理解吧。

下面就是操作流程,分了九部分

1下载Eclipse

2下载MinGW

3安装MinGW

4控制台操作

5控制台运行MinGW编译器

6认识环境变量,纯手工编译

7设置环境变量

8安装Eclipse

9使用Eclipse

10 Eclipse进阶

如果没耐心,可以跳过4 5 6部分

---------------------开始-------------------

一、 下载Eclipse

首先到Eclipse官网下载Eclipse

当然要下载 for c/c++ developers的版本

也可以去找中文版,不过还是用英文原版的比较好。

Eclipse官网:/

下载页面:/downloads/

根据系统是32还是64位选择下载

然后点击大的绿箭头就可以下载了。

下载完之后别急着安装,最好先装MinGW。

二、 下载MinGW

进入官网:/

在网页下侧Navigation里点downloads(真不知道为啥要把下载链接藏得这么隐蔽。。)

点击Download mingw-get-inst„„下载

(注意:这里下载的是在线安装包,很小,安装过程需要联网,它会自动下载你要装的组建,不过经常出问题,后面会说解决方法)

三、 安装MinGW

运行下载下来的,安装路径最好不要改,默认装在C:MinGW

首先弹出这个选项,是问你待会儿在线下载的时候下什么版本的

图中的意思是下载2012年4月26号发布的版本还是下载目前最新发布的版本

中间会让你选择要装哪些语言的编译器,勾上c(有些安装包会显示为gcc),c++,fortran(有些安装包会显示为g77)吧(我特地重装一遍才发现有fortran选项。。)

安装过程中会弹出个控制台,是进行组件的下载。

正常情况应该能看到下载进度或者一排update„„.xml什么的

如果出现图中的ERROR说明下载失败,原因可能是你所在的网段连不到对方服务器(美国,欧洲,台湾都有服务器,感谢伟大的GFW吧)

解决方案:1、换一个网段,最好是校园网,限制少一些

2、下载离线安装包,大概几十到一百多MB,去百度搜“mingw 离线包”

离线安装方法参考/art/1373333

或者/wiki/InstallationHOWTOforMinGW

具体不赘述了

顺利装完之后在C:MinGWbin里面就是各种编译器的exe了。

我们一般用的就是(编c),g++.exe(编c++)和(编译fortran)了

当然这些不是让你直接运行的,如果你直接双击它,会看到一个黑屏一闪而过,也就是大家平常运行自己编的控制台程序弹出的控制台。之所以是一闪而过是因为你点击它运行之后,他发现你没给他c程序,于是他就结束了,控制台也关闭了。

四、 控制台操作(会的可以跳过)

控制台,或者叫命令提示符,或者叫cmd,或者叫command,这个东西大家应该不陌生但

也不熟悉,这里稍微简单讲一下它的用法,后面要用。

打开控制台的办法就是开始菜单-附件-命令提示符

或者直接输入cmd,运行

或者打开之后就是这样

第三行显示C:UsersAdministrator>_ 表示你目前处在这个文件夹里面。

闪闪的光标是在等你敲命令

下面简单讲几个常用命令

1、切换磁盘,假如想进F盘,就输入F:回车

C:UsersAdministrator>F:

F:>_

就跑到F盘里面了

2、cd 进入一个文件夹

cd就是change directory,比如想进入F盘的Software文件夹

F:>cd Software

F:Software>

或者输入一个完整目录名

F:Software>cd “F:ebooksprogramming language”(输入整串路径时,如果中间带空格最好用引号引上,否则有时候计算机会认为是两句话,控制台下经常因为这个小细节出问题)

F:ebooksprogramming language>_

如果想进入其他磁盘的文件夹要先切换到那个磁盘

C:UsersAdministrator>cd F:ebooks

C:UsersAdministrator>F:

F:ebooks>_

如果要返回上一层就输入cd ..

F:ebooksprogramming language>cd..

F:ebooks>cd..

F:>_

小技巧:在输入cd空格之后,再输入当前目录下一个文件夹的首字母(或开头部分字母),然后按Tab键,计算机就会自动帮你补全文件夹的名字,很方便,例如

F:>cd e(此时按Tab)变成F:>cd ebooks(再按Tab)变成F:>cd emule(一直按下去就会在所有e打头的文件夹里循环)

3、向上方向键(不算命令,只是个技巧)

如果想输入曾经输入过的命令,就按向上方向键,按n下就会调出n次之前输入的命令

4、echo

英文意思是回音,专业术语是回显,回音是你说什么就回过来什么话,回显就是你打什么它就显示什么。。例如

F:>echo 123456

123456

F:>echo abc

Abc

当然这好像没什么用,通常在批处理中才用到。当然我们可以这样玩~

F:>set abc=100先给abc这个变量(后面会讲这是环境变量)赋值100,用set命令然后:

F:>echo %abc%

100

这时候就是输出abc的值了,注意引用环境变量要用%%括起来,如果这样:

F:>echo abc

abc

计算机认为那纯粹是字符abc。

5、set

设置环境变量见4

6、dir

是directory的缩写,就是查看当前目录下有哪些东西。。

F:>dir

„„

结果挺长。我就不放上来了。大家自己试试。。

7、运行一个文件

如果F:ebooks下面有一个,我们来打开它

F:>cd ebooks

F:ebooks>

(期间一个记事本打开了)

F:ebooks>_

很简单

五、 控制台运行MinGW编译器

介绍了一些命令,大家可以用这些命令去运行C:MinGWbin下面的(后面主要靠它编译c了),结果如下:

C:UsersAdministrator>cd c:MinGWbin

c:MinGWbin>

: 致命错误:没有输入文件

c:MinGWbin>

因为没有给c程序,所以gcc没事儿干就退出来了,刚才直接双击运行黑框一闪而过时就是输出了这个,只不过那时候控制台马上就关掉了

没有源程序,那我们去找一个

在F:UsersAdministratorworkspaceCompileTest里面我写好了一个helloworld的c程序

小技巧{

现在想用控制台快速进入这个目录又懒得敲键盘发现控制台里面ctrl+v复制不起作用我们就:

嗯右键里面有粘贴选项。。}

用控制台进入helloworld.c所在的文件夹之后,让来编译它:

F:UsersAdministratorworkspaceCompileTest> helloworld.c

这个命令的意思就是打开 空格之后跟着的文件名是参数,或者说输入文件,或者用windows的理解就是说用打开helloworld.c,就像用Word2010打开”某个文件.doc”

回车之后:

F:UsersAdministratorworkspaceCompileTest> helloworld.c

'' 不是内部或外部命令,也不是可运行的程序

或批处理文件。

发现是这个结果,因为计算机找不到,我们离开了c:MinGWbin,它当然找不到。怎么办呢?

六、 认识环境变量,纯手工编译

当你输入回车的时候,计算机要去找到gcc并且运行它,一般来说先在当前目录找,如果找不到,这时候计算机就回去几个备用的地方找,这几个备用的地方就记录在一个叫path的环境变量里。

可以输入echo %path% 回车看看

F:UsersAdministratorworkspaceCompileTest>echo %path%

C:Program Files (x86)PC Connectivity Solution;C:windowssystem32;C:windows;„„(太多,不全复制过来了)

可以看到有许多路径,都是用分号隔开

如果在里面加上C:MinGWbin是不是就可以让计算机找到gcc了呢,试试

F:UsersAdministratorworkspaceCompileTest>set PATH=%PATH%;C:MinGWbin

(这句话就相当于变成里面的a=a+1之类的,只不过是字符串相加,在path末尾加上了“;C:MinGWbin”注意要用分号和前面隔开)

这时候再运行

F:UsersAdministratorworkspaceCompileTest> helloworld.c

(这里输出一个空行表示顺利运行gcc)

F:UsersAdministratorworkspaceCompileTest>_

这样helloworld.c就顺利编译了,编译完成默认在helloworld.c的文件夹里产生一个,运行一下

F:UsersAdministratorworkspaceCompileTest>

hello world

F:UsersAdministratorworkspaceCompileTest>

输出正确,这样纯手工编译就完成了

其实可以省略为gcc,另外如果你想自定义输出exe的名字可以加-o参数,例如:

gcc –o hello helloworld.c

这时候就会输出

当然你可以编译一个fortran程序,用gfortran而不是gcc编译,写了一个fortran的helloworld程序HW.f90

–HW HW.f90

会输出

完成了么?你把控制台关掉再打开就不灵了。因为自己用set设置的环境变量随着控制台的关闭而失效。

七、 设置环境变量

怎样设置永久的环境变量呢如图

开始菜单->计算机(右键)->属性->(左侧)高级系统设置->高级选项卡->环境变量->在“系统变量”里找到Path,选中,点击“编辑”->在变量值的末尾加上“;C:MinGWbin”->确定->确定->确定

这样环境变量Path就配置好了,还有几个环境变量百度一下“MinGW环境变量”也如法炮制。好像是LIBRARY_PATH和C_INCLUDEDE_PATH什么的~

八、 安装Eclipse

刚才的纯手工写程序,命令行编译只是演示一下基本原理,觉得麻烦没关系,用了eclipse

就不麻烦了,之前说了半天,也就是告诉大家环境变量这么个东西,正确设置了环境变量,用eclipse就不会出问题(不像微软的VC、VS,都自动弄好了)

刚才下载的eclipse-cpp-indigo-SR2-incubation-win32-x86_可以解压缩了,解压完就直接用。。不用安装

要注意的一点是,如果Eclipse运行不起来是因为你没有装Java虚拟机(不是装fortran用的那种虚拟机)Eclipse是基于java的,去java官网安装一下

/zh_CN/

点击下方小字“所有java下载”

根据是32还是64位选择下载

九、 使用eclipse

安装好之后eclipse就可以运行了

运行后需要新建一个工作空间

进入之后新建一个c project

之后弹出一个对话框,填上项目名称,第一次用,可以选择hello world ansi c project。这样就新建一个已经写好的程序,右侧toolchains选择MinGW GCC,就是刚才装的编译器,这样eclipse就可以用mingw编译了。

点击Finish之后就完成了创建,屏幕上显示的是一个标准helloworld程序,按上方的锤子按钮进行编译,按绿色播放按钮运行程序。所有的错误信息以及程序输出等会在下方的四个选项卡里显示。图中console就是控制台,可以看到程序有了正确的输出,控制台左上角表示程序运行结束。总的来说布局和vc类似。

可能出现的问题:

一看不到输出

如果你的程序编译正确,运行后就是看不到输出,但console左上角有字样表示程序正确运行,这样的解决办法是:

菜单Run->Run configurations->Environment选项卡->New->Name:PATH

Value:C:MinGWbin->OK->Close

这时候再运行一遍就正确了,这就是在eclipse里面设置了一个环境变量path

二scanf和printf执行顺序颠倒

其实不是执行顺序颠倒,是因为程序输出的字符被暂时送到缓冲区里,没有马上显示到屏幕上

这个是eclipse的问题跟mingw无关方法是在

main(){后面加

setvbuf(stdout,NULL,_IONBF,0);//禁用缓冲区

原理以及其他方法什么的请百度“eclipse scanfprintf”

十、 eclipse进阶

如果想发挥eclipse的最大功用,英文过关的可以看eclipse自带的英文教程,学着debug,学着自己写makefile等等

教程:

菜单Help->Welcome->tutorials->c c++ development 然后自己看吧

总结

简单总结一下所有的过程就是

下载Mingw和eclipse

安装mingw

配置环境变量

解压eclipse

运行eclipse(有可能要先装java虚拟机)

编程序

水平有限只能写成这样了大家自己也多多摸索用自由软件就要发挥探索精神多分享多交流