拿起Eclipse Eclipse+MinGW配置cc++编译器给cc++语言的初学者第三版多了关于字符输出顺序问题.docx
《拿起Eclipse Eclipse+MinGW配置cc++编译器给cc++语言的初学者第三版多了关于字符输出顺序问题.docx》由会员分享,可在线阅读,更多相关《拿起Eclipse Eclipse+MinGW配置cc++编译器给cc++语言的初学者第三版多了关于字符输出顺序问题.docx(26页珍藏版)》请在冰点文库上搜索。
拿起EclipseEclipse+MinGW配置cc++编译器给cc++语言的初学者第三版多了关于字符输出顺序问题
扔掉VC6.0!
拿起Eclipse!
——给c/c++语言的初学者
第二版修改部分:
增加了关于MinGW的下载安装失败问题
第三次修改:
关于scanf和printf输出顺序颠倒问题
本文旨在介绍一个C/C++编译器:
MinGW(也可编译fortran)和一个编程工作平台:
Eclipse的安装和使用,以代替古老的VC6.0
本文是写给非计算机专业c/c++的初学者(有的计算机专业也一直用VC平台(什么创天中文c++之类的))
本文作者层次有限,在专业人士看来我废话半天就是在说很简单的事情。
。
对有些问题理解还较浅薄,有出纰漏的地方望专业人士指教。
。
。
为什么想起来写一个这个日志?
一、因为最近院里面开了c的课,广大同胞刚被fortran以及坑爹的fortran编译器折磨之后,编译和运行c又成了一个头疼的事情。
因为微软出的开发环境developerstudio什么的距今实在太久,对现在的win7系统兼容不是很好(win7下ie无法打开第二链接就是因为装了fortran,当时大禹院多少本本都躺着中枪啊),64位win7还无法安装。
所以大家要不换xp要不装虚拟机,搞得很麻烦。
用了eclipse+MinGW后能较好的解决问题,但是这两个软件大家并不熟悉,而且安装起来也有些要注意的,会遇到以前没遇到的概念。
。
。
二、微软的开发工具把后台很多东西都掩盖掉了,大家编了那么多程序永远只是在一个界面敲敲程序然后点三个按钮就会出来一个黑框输入输出就完了,真正在后面发生了什么很少有人去管他。
我们的c语言教学中也只教授语言的编写,关于上机的操作也只是老师口头说的。
目前c语言教学一般用谭浩强的《c程序设计》,这本书的1991年版(我手边还留着一本)上有怎样在unix或dos上用命令行(就是黑白屏幕没鼠标)编译c的说明。
把一个程序从f.c变成f.o再和库link起来最后变成能运行的exe,这也就解释了头文件include是怎么跑到最后的exe里去的。
但是现今的版本对这部分解释的不详细,因为命令行逐渐用不到,而且谭浩强的这本书的特色就是通俗易懂,适合初学者,不鼓励一上来就去抓一些繁琐的细节。
总之用了Eclipse+MinGW就会接触到更多后台的东西。
三、Eclipse是免费开源的,GNU软件,微软的东西是收费的,大家用的vc肯定大多是盗版(好吧,99%是盗版,还有1%的会去找教育版。
。
)。
支持自由共享精神,不用吸血驴。
。
扯远了。
。
四、比较一下目前的几种编译平台
微软的VC++6.0:
太老了,对win7兼容不好,
现在微软的VisualStudio:
安装包太大,好几个G,装了一堆你不需要的东西,要钱,教育版申请麻烦
DOS下的TurboC++:
虽说windows下也可以用,但也是老古董了,伪图形界面。
。
操作困难。
开源Eclipse+开源编译器MinGW:
对win7兼容良好,免费,设置也很自由,可以自己全权控制编译的详细过程和设置,也可以用默认的设置,按几个按钮直接编译运行。
但在安装时要稍微设置一下。
五、目前网上也有各种安装配置Eclipse+MinGW的教程,比较乱,当初自己也摸索了半天才用上,就干脆自己写一个。
所以写这个日志还是很有必要的。
Eclipse和MinGW是什么?
Eclipse是一个开发平台,姑且理解为一个可以给你敲程序的图形界面。
他本身不具有编译能力,只是方便你写程序,比如把不同意义的语句显示为不同颜色等等。
Eclipse不仅可以用来写c,也可以写java等别的程序。
MinGW是编译器,包括了c/c++,甚至还有fortran(我最新发现)的编译器。
编译器就是个程序,没有任何图形界面,你运行他的办法就是用命令行(cmd),给他一个f.c,他编译过之后给你一个f.exe
其实要编一个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(增加了关于scanf和printf输出顺序颠倒问题)
10Eclipse进阶
如果没耐心,可以跳过456部分
---------------------开始------------------
一、下载Eclipse
首先到Eclipse官网下载Eclipse
当然要下载forc/c++developers的版本
也可以去找中文版,不过还是用英文原版的比较好。
Eclipse官网:
http:
//www.eclipse.org/
下载页面:
http:
//www.eclipse.org/downloads/
根据系统是32还是64位选择下载
然后点击大的绿箭头就可以下载了。
下载完之后别急着安装,最好先装MinGW。
二、下载MinGW
进入官网:
http:
//www.mingw.org/
在网页下侧Navigation里点downloads(真不知道为啥要把下载链接藏得这么隐蔽。
。
)
点击Downloadmingw-get-inst……下载
三、安装MinGW
运行下载下来的mingw-get-inst-.exe,安装路径最好不要改,默认装在C:
\MinGW
首先弹出这个选项,是问你待会儿在线下载的时候下什么版本的
图中的意思是下载2012年4月26号发布的版本还是下载目前最新发布的版本
中间会让你选择要装哪些语言的编译器,勾上c(有些安装包会显示为gcc),c++,fortran(有些安装包会显示为g77)吧(我特地重装一遍才发现有fortran选项。
。
)
安装过程中会弹出个控制台,是进行组件的下载。
正常情况应该能看到下载进度或者一排update…….xml什么的
如果出现图中的ERROR说明下载失败,原因可能是你所在的网段连不到对方服务器(美国,欧洲,台湾都有服务器,感谢伟大的GFW吧)
解决方案:
1、换一个网段,最好是校园网,限制少一些
2、下载离线安装包,大概几十到一百多MB,去XX搜“mingw离线包”
离线安装方法参考
或者http:
//www.mingw.org/wiki/InstallationHOWTOforMinGW
具体不赘述了
装完之后在C:
\MinGW\bin里面就是各种编译器的exe了。
我们一般用的就是gcc.exe(编c),g++.exe(编c++)和gfortran.exe(编译fortran)了
当然这些不是让你直接运行的,如果你直接双击它,会看到一个黑屏一闪而过,也就是大家平常运行自己编的控制台程序弹出的控制台。
之所以是一闪而过是因为你点击它运行之后,他发现你没给他c程序,于是他就结束了,控制台也关闭了。
四、控制台操作(会的可以跳过)
控制台,或者叫命令提示符,或者叫cmd,或者叫command,这个东西大家应该不陌生但也不熟悉,这里稍微简单讲一下它的用法,后面要用。
打开控制台的办法就是开始菜单-附件-命令提示符
或者直接输入cmd,运行cmd.exe
打开之后就是这样
第三行显示C:
\Users\Administrator>_表示你目前处在这个文件夹里面。
闪闪的光标是在等你敲命令
下面简单讲几个常用命令
1、切换磁盘,假如想进F盘,就输入F:
回车
C:
\Users\Administrator>F:
F:
\>_
就跑到F盘里面了
2、cd进入一个文件夹
cd就是changedirectory,比如想进入F盘的Software文件夹
F:
\>cdSoftware
F:
\Software>
或者输入一个完整目录名
F:
\Software>cd“F:
\ebooks\programminglanguage”(输入整串路径时,如果中间带空格最好用引号引上,否则有时候计算机会认为是两句话,控制台下经常因为这个小细节出问题)
F:
\ebooks\programminglanguage>_
如果想进入其他磁盘的文件夹要先切换到那个磁盘
C:
\Users\Administrator>cdF:
\ebooks
C:
\Users\Administrator>F:
F:
\ebooks>_
如果要返回上一层就输入cd..
F:
\ebooks\programminglanguage>cd..
F:
\ebooks>cd..
F:
\>_
小技巧:
在输入cd空格之后,再输入当前目录下一个文件夹的首字母(或开头部分字母),然后按Tab键,计算机就会自动帮你补全文件夹的名字,很方便,例如
F:
\>cde(此时按Tab)变成F:
\>cdebooks(再按Tab)变成F:
\>cdemule(一直按下去就会在所有e打头的文件夹里循环)
3、向上方向键(不算命令,只是个技巧)
如果想输入曾经输入过的命令,就按向上方向键,按n下就会调出n次之前输入的命令
4、echo
英文意思是回音,专业术语是回显,回音是你说什么就回过来什么话,回显就是你打什么它就显示什么。
。
例如
F:
\>echo
F:
\>echoabc
Abc
当然这好像没什么用,通常在批处理中才用到。
当然我们可以这样玩~
F:
\>setabc=100先给abc这个变量(后面会讲这是环境变量)赋值100,用set命令然后:
F:
\>echo%abc%
100
这时候就是输出abc的值了,注意引用环境变量要用%%括起来,如果这样:
F:
\>echoabc
abc
计算机认为那纯粹是字符abc。
5、set
设置环境变量见4
6、dir
是directory的缩写,就是查看当前目录下有哪些东西。
。
F:
\>dir
……
结果挺长。
我就不放上来了。
大家自己试试。
。
7、运行一个文件
如果F:
\ebooks下面有一个a.txt,我们来打开它
F:
\>cdebooks
F:
\ebooks>a.txt
(期间一个记事本打开了)
F:
\ebooks>_
很简单
五、控制台运行MinGW编译器
介绍了一些命令,大家可以用这些命令去运行C:
\MinGW\bin下面的gcc.exe(后面主要靠它编译c了),结果如下:
C:
\Users\Administrator>cdc:
\MinGW\bin
c:
\MinGW\bin>gcc.exe
gcc.exe:
致命错误:
没有输入文件
c:
\MinGW\bin>
因为没有给c程序,所以gcc没事儿干就退出来了,刚才直接双击运行gcc.exe黑框一闪而过时就是输出了这个,只不过那时候控制台马上就关掉了
没有源程序,那我们去找一个
在F:
\Users\Administrator\workspace\CompileTest里面我写好了一个helloworld的c程序
小技巧{
现在想用控制台快速进入这个目录又懒得敲键盘发现控制台里面ctrl+v复制不起作用我们就:
嗯右键里面有粘贴选项。
。
}
用控制台进入helloworld.c所在的文件夹之后,让gcc.exe来编译它:
F:
\Users\Administrator\workspace\CompileTest>gcc.exehelloworld.c
这个命令的意思就是打开gcc.exe空格之后跟着的文件名是参数,或者说输入文件,或者用windows的理解就是说用gcc.exe打开helloworld.c,就像用Word2010打开”某个文件.doc”
回车之后:
F:
\Users\Administrator\workspace\CompileTest>gcc.exehelloworld.c
'gcc.exe'不是内部或外部命令,也不是可运行的程序
或批处理文件。
发现是这个结果,因为计算机找不到gcc.exe,我们离开了c:
\MinGW\bin,它当然找不到。
怎么办呢?
六、认识环境变量,纯手工编译
当你输入gcc.exe回车的时候,计算机要去找到gcc并且运行它,一般来说先在当前目录找,如果找不到,这时候计算机就回去几个备用的地方找,这几个备用的地方就记录在一个叫path的环境变量里。
可以输入echo%path%回车看看
F:
\Users\Administrator\workspace\CompileTest>echo%path%
C:
\ProgramFiles(x86)\PCConnectivitySolution\;C:
\windows\system32;C:
\windows;……(太多,不全复制过来了)
可以看到有许多路径,都是用分号隔开
如果在里面加上C:
\MinGW\bin是不是就可以让计算机找到gcc了呢,试试
F:
\Users\Administrator\workspace\CompileTest>setPATH=%PATH%;C:
\MinGW\bin
(这句话就相当于变成里面的a=a+1之类的,只不过是字符串相加,在path末尾加上了“;C:
\MinGW\bin”注意要用分号和前面隔开)
这时候再运行
F:
\Users\Administrator\workspace\CompileTest>gcc.exehelloworld.c
(这里输出一个空行表示顺利运行gcc)
F:
\Users\Administrator\workspace\CompileTest>_
这样helloworld.c就顺利编译了,编译完成默认在helloworld.c的文件夹里产生一个a.exe,运行一下
F:
\Users\Administrator\workspace\CompileTest>a.exe
helloworld
F:
\Users\Administrator\workspace\CompileTest>
输出正确,这样纯手工编译就完成了
其实gcc.exe可以省略为gcc,另外如果你想自定义输出exe的名字可以加-o参数,例如:
gcc–ohellohelloworld.c
这时候就会输出hello.exe
当然你可以编译一个fortran程序,用gfortran而不是gcc编译,写了一个fortran的helloworld程序HW.f90
gfortran.exe–HWHW.f90
会输出HW.exe
完成了么?
你把控制台关掉再打开就不灵了。
因为自己用set设置的环境变量随着控制台的关闭而失效。
七、设置环境变量
怎样设置永久的环境变量呢如图
开始菜单->计算机(右键)->属性->(左侧)高级系统设置->高级选项卡->环境变量->在“系统变量”里找到Path,选中,点击“编辑”->在变量值的末尾加上“;C:
\MinGW\bin”->确定->确定->确定
这样环境变量Path就配置好了,还有几个环境变量XX一下“MinGW环境变量”也如法炮制。
好像是LIBRARY_PATH和C_INCLUDEDE_PATH什么的~
八、安装Eclipse
刚才的纯手工写程序,命令行编译只是演示一下基本原理,觉得麻烦没关系,用了eclipse就不麻烦了,之前说了半天,也就是告诉大家环境变量这么个东西,正确设置了环境变量,用eclipse就不会出问题(不像微软的VC、VS,都自动弄好了)
刚才下载的eclipse-cpp-indigo-SR2-incubation-win32-x86_64.zip可以解压缩了,解压完就直接用。
。
不用安装
要注意的一点是,如果Eclipse运行不起来是因为你没有装Java虚拟机(不是装fortran用的那种虚拟机)Eclipse是基于java的,去java官网安装一下
点击下方小字“所有java下载”
根据是32还是64位选择下载
九、使用eclipse
安装好之后eclipse就可以运行了
运行后需要新建一个工作空间
进入之后新建一个cproject
之后弹出一个对话框,填上项目名称,第一次用,可以选择helloworldansicproject。
这样就新建一个已经写好的程序,右侧toolchains选择MinGWGCC,就是刚才装的编译器,这样eclipse就可以用mingw编译了。
点击Finish之后就完成了创建,屏幕上显示的是一个标准helloworld程序,按上方的锤子按钮进行编译,按绿色播放按钮运行程序。
所有的错误信息以及程序输出等会在下方的四个选项卡里显示。
图中console就是控制台,可以看到程序有了正确的输出,控制台左上角表示程序运行结束。
总的来说布局和vc类似。
可能出现的问题:
一没有输出,但程序正常编译运行
如果你的程序编译正确,运行后就是看不到输出,但console左上角有字样表示程序正确运行,这样的解决办法是:
菜单Run->Runconfigurations->Environment选项卡->New->Name:
PATHValue:
C:
\MinGW\bin->OK->Close
这时候再运行一遍就正确了,这就是在eclipse里面设置了一个环境变量path
二,scanf和printf执行顺序颠倒
其实不是执行顺序颠倒,是因为程序输出的字符被暂时送到缓冲区里,没有马上显示到屏幕上
这个是eclipse的问题跟mingw无关方法是在
main(){后面加
setvbuf(stdout,NULL,_IONBF,0);//禁用缓冲区
原理以及其他方法什么的请XX“eclipsescanfprintf”
十、eclipse进阶
如果想发挥eclipse的最大功用,英文过关的可以看eclipse自带的英文教程,学着debug,学着自己写makefile等等
教程:
菜单Help->Welcome->tutorials->cc++development然后自己看吧
总结
简单总结一下所有的过程就是
下载Mingw和eclipse
安装mingw
配置环境变量
解压eclipse
运行eclipse(有可能要先装java虚拟机)
编程序
水平有限只能写成这样了大家自己也多多摸索用自由软件就要发挥探索精神多分享多交流同意的就分享一下日志呗~