MyMSDN

MyMSDN记录开发新知道

用Eclipse+gcc编译器开始你的旅程

 

c++
Eclipse(http://www.eclipse.org/

 

Eclipse是一个由IBM公司牵头开发的一个自由软件,后来IBM公司为了让更多的公司积极参与进来而不至于让它们因为这是一个由IBM主导的软件而导致软件开发者们拒之门外,Eclipse的身份则转为由一个固定员工的组织所维护的非营利组织。它和所有的自由软件一样,被免费地提供给所有热爱开源事业的人们,通过集体的智慧将它进行完善。

Eclipse是一款跨平台的IDE,它既不是编译器,也不是简单的编辑器,它提供了一个开放的平台用于为各种各样的编译器,开源或者不开源的,提供一个能够共同操作的平台。由于它是一款基于Java虚拟机的应用软件,因此它同时也是一款跨平台的IDE。跨平台的特性让它的存在有了更有征服力的理由。众所周知,Linux是开源社区中的一颗璀璨夺目的明珠,以Linux为核心的开源软件组织也是数不胜数,无数人为之奋斗倾尽心血。但是作为开发人员,Windows平台上的Visual Studio一贯的平易近人(不是指价格上)让所有的程序员所称赞。就算是要搞Borland Delphi也有一款优秀的IDE在实时待命。但是在Linux上有啥?对于骨灰级的程序员,拿个Emacs甚至一个记事本就可以将编程进行到底。他们追求的无非就是换行和显色等漂亮点的效果,对于项目级的维护和便利并没有过高的要求,也许是一种习惯,也许是一种妥协。但是这一切因为Eclipse的出现而大大变样了,程序员从纷繁的makefile中解脱出来专心于逻辑代码的编写,很多自动化的组件出现更增加了程序的健壮性。虽然旧式的编码方式显得更专业,但还是一定程度上束缚了生产力的发展。

多说无益,反正IDE的出现总是预示着编程门槛的降低,随之而来带来的就是在该平台上的投入的人员越来越多而让这个平台能够接受越来越多的人来参与。这对这个产业绝对是“生产力大奖”的。

CDT(http://www.eclipse.org/cdt/

CDT英文全称是C/C++ Developer Tools,CDT是为Eclipse平台提供集成开发环境的一个项目。我们知道将Eclipse+CDT就可以用于开发C++了,现在又说这CDT也是个IDE,这是怎么回事呢?事实是这样的,因为Eclipse是个开放的平台,所以它希望所有的开发者都能够参与进来。但是现在市面上流行的语言种类太多了,多得有点数不过来,有些甚至只有少数几个人自己会用(比如中文编程语言吧)。所以Eclipse公开了自己的部分接口让这些语言能够定义带有自己特征的部分功能。可以这么理解,Eclipse定义了IDE的共性部分,而类似CDT这样的则定义了IDE的个性部分。所以它是专门针对C/C++IDE的个性化组件。有了它,用Eclipse写C/C++代码才显得更有价值。

CDT的组件安装,则是将安装包解压后,直接覆盖到Eclipse的目录下,重新启动Eclipse即可。关于这点内容可能根据具体的版本会略有不同。当然最简单的方式是下载C/C++版本的Eclipse

编译器(Complier)

每一个科班出身的程序员对这个词都耳熟能详,每个人对这个词都有自己的理解。但是真正接触过的程序员又有多少呢?来一段软件开发技术发展的简史,传说在很久以前,搞计算机的都是科学家,那时候大家刚刚从硬件电板上转到键盘编码的过程中来,用汇编+DOS似乎是一件很享受的事,但是那批科学家已经青春不在了。新来的年轻人又弄出了高级语言这种接近人类思维的语言,很快汇编就成为了专属领域的内容,能用高级语言的地方,没有人愿意让汇编有用武之地。很快汇编也渐渐淡出视线。然后就是图形化界面的出现,但这本身并没有改变人们使用编译器的方式。无非就是换成记事本去编写代码罢了。但是图形化的出现促使了图形化IDE的出现,人们发现编译事实上又是遵循一定规律的集合,这部分可以很容易地通过一些编程上的限制或者通过代码可以整理出人们期待的编译方式,于是很快makefile一类的事也变成人们可以淡忘的事了。现在人们使用许多优秀的IDE,编译不过只是按一下“编译”或者输入个快捷方式。那些难记的参数早已经忘到九霄云外了。由于编程的门槛在大大降低,所以是越来越多的程序员跟编译器无一面之缘了。我们称他们都是被惯坏的程序员,当然并不表示他们就怎么不好了,只是一个社会现象罢了。正如我们会用白米煮饭,并不需要我们去理解谷子的剥皮方式,也不需要去理解水稻的种植。我们只要懂得选择哪种米能煮出更好吃的米饭就可以了。当然了,这一点在Windows平台上显得更为常见,因为Windows是最普及也是很优秀的一款图形化的操作系统。但是在Unix上,计算机的发展还没有那么文明。这里的大多数程序员从水稻种植到磨成白米,样样都得会,不然连HelloWorld都整不出来。而且每次要Say Hello就得重头开始写makefile,手动编译等。虽然这看起来很酷,但是没有多少意思。

C/C++的编译器很多,比较常见的优秀作品有MS C++,GCC(G++),Borland C++等,其中在Windows平台上基本都用MS C++,而且MS C++也是截至我发稿时最接近ISO C++标准的编译器(据说已经实现了标准的98%以上),但是在Linux平台上,则多数是以GCC为主,其中GNU GCC Complier则是其中的佼佼者,但是它的标准化只达到了(94%以上,但是之前一直优于MS C++,即便如此,大部分的Linux C++开发人员仍然亲睐GCC,因为它是OpenSource的)。

经过简单的一段介绍,我们应该对编译器有了一点感觉了,可是这和我们这篇主题有啥关系?我只是一个希望点一下“编译”按钮的读者,我并不希望makefile然后才编译。这一切似乎和我没啥关系。不过我告诉你,就了Eclipse+CDT,你仍然做不到这点。因为就算是针对C/C++的开发,我们仍然要经常面临使用不同的编译器进行编译的情形。甚至有些语法特性和标准C++并无任何关联,而仅与不同的编译器有关。又或者有些源代码在不同的编译器编译下会产生微妙不同的目标代码,而这一些则需要我们更好地理解。就算我们期望有一种通用或者说是常用的方式来解决这个问题,我们仍然需要手动为自己配置一个简单而通用的编译器,尽管你从不了解编译器方面的差异,你起码也得有一个编译器。那么好吧,既然Eclipse的安装如此不尽人意,那我就只能自己动手了。

如果您看过我的上两篇文章,您或许已经跟着做了,如果没有,那么重复一遍。(《如何安装MinGW 》、《如何安装Minimal SYStem(MSYS)》)

如果您照上面那么做了,那么您的机器上已经有了MinGW和MSYS了,换言之,您已经有了gcc、make以及其它一些必要文件了。下面您需要做的只要设定一下环境变量即可。

设置环境变量步骤:

右键“我的电脑”(没有“我的电脑”的用户在桌面右键“属性”,然后再“桌面”选项卡中自定义中将其选出,或者直接在Windows Explorer地址栏中输入“我的电脑”,回车即可),选择“属性”,选择“高级”选项卡,最下方有“环境变量”(或Alt+N打开),在下面窗格“系统变量”中,选择变量“Path”,双击后出现“编辑系统变量”的选项。将我们MinGW的bin目录全局路径复制进去(一般可以复制在“变量值”的最前面,或者紧跟在任何一个“;”(分号,不包括引号)后),点击确定,即可。

image

如果我现在告诉您可以编辑C/C++代码了,您相信么?

好吧,那么就开始我们的第一个C/C++代码的测试,以验证我们的成果。

一个HelloWorld的基本步骤:

1、打开Eclipse

2、选择一个“工作空间”(workspace)

image

3、选择一个“工程”(Project)

image

4、在向导中设置项目名称。这里我们将项目名称设定为HelloEclipse,在存放路径上,我们需要有所讲究,如果我们勾选Use default location的话,我们的location位置将是步骤1中设置的路径,我们通常需要设立子文件夹,以避免工程数量的增加而导致不同工程文件的交错。深刻理解这一点,把两种方案都试一下就可以了。

在Project types(项目类型)中,我们可以选择一个Hello World ANSI C Project,在Toolchain中选择MinGW GCC,这就是我们本机所拥有的编译器了。

image

5、因为我们选择了Hello World项目,所以我们还有一个基本设置的页面,可以输入一些个性化的信息。

image

6、如果您是在Windows上使用,则可以选择高级设置(Advanced settings),选择二进制转换器的类型(如图),当然,默认情况下是选好的因此,不用顾及该部分内容也依然会成功,但如果您遇到诸如此类的问题,则可以看看这里是否正确设置了。

image

相关路径:C/C++ Build -> Settings -> Binary Parsers

image

点击“OK”或者“Finish”即可完成。

7、编写个代码试试(其实系统已经为我们在src文件夹下生成了一个)

让我们写一个简单的代码试试

代码如下:
#include <stdio.h>
void myputs(char * s);
int main()
{
char * s = "HelloEclipse!";
myputs(s);
return 0;
}
void myputs(char * s)
{
while(*s)
{
printf("%c",*s++);
}
return;
}
image
另外在菜单Project中有很多Build相关的选项,选择Build Project后,等待编译结束,然后点击“Run”(绿色图标),在最下方的选项卡中找到Console,即可看到输出结果。

posted on 2008-10-01 03:08 volnet 阅读(12427) 评论(12)  编辑 收藏 引用

评论

# re: 用Eclipse+gcc编译器开始你的旅程[未登录] 2008-08-01 22:47 feosun

On windows platform,VS is the most powerful and professional IDE, but in linux ur solution is a good choice.  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程 2008-08-02 09:43 Strive

貌似我就是用的这个开发环境,学习时就用MinGW Developer Studio。  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程 2008-08-02 10:35 yxxyun

相比这个,我更喜欢code::blocks,越用越喜欢。  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程 2008-08-02 12:12 Bill Hsu

VS好像更漂亮一点。。。  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程 2008-10-01 10:58 空明流转

我用codeblocks。简洁好用。  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程 2008-10-06 16:10 sean

怎么在linux下 用Eclipse+GCC 来编程??  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程 2008-10-06 19:29 volnet

@sean
这是在Windows下~  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程[未登录] 2008-10-10 10:08 Xshl5

工具毕竟只是辅助,往往在为我们提供方便的同时丢掉了原有的灵活;作为一个程序员,我们有权利和义务了解从源代码到执行程序过程中,编译器为我们做了什么,只有深入了解计算机系统,才能写出高效的代码。所以从学习技术的角度看,我们不要太过于依赖IDE;当然从商业开发的角度看,IDE能大大提高我们的开发效率。即使是VS的开发者,他们在开发的过程中也不会使用什么IDE。。  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程 2008-10-11 00:04 volnet

@Xshl5
你说的很对,不过写这篇文章的目的,也就是减轻大家在安装它的时候出现的麻烦,如果被这儿卡住了,或许很多人就完全失去兴趣了。人们总是不愿意见到异常和错误,这会让他们不舒服。
至于楼主说的VS的开发者,我们也不应该蛮目跟风,究竟他们怎么开发,都已经是以讹传讹的事,毕竟咱连小系统都开发地头晕脑胀,就没有必要一开始就跟着大牛,这同样会降低开发者的兴趣。
入门的门槛也可能会影响这个行业的规模。没有微软简便的开发模式,现在计算机的普及率肯定还是惨不忍睹,而Linux那些高深理论总是在人们循序渐进过后慢慢回味才会觉得耐人寻味。但我们决不能忽视入门者的功劳,没有他们我们甚至可能和计算机无缘,也许十年后我们才能感受到计算机的好处。也许这十年我们还在重复着过去十年的工作。也许一切都不是如此发达……这里我们也需要感谢集成和快速。他们功不可没。  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程 2008-10-12 20:28 Wick

@feosun
如果版权收到严格保护,那么考虑花费几百美金来买正版Visual Studio 2008软件,我相信这个方案的价值会提升很多。

@Xshl5
楼主这篇文章不是在讨论IDE的意义,而是在向各位推荐另一个C++平台。

  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程[未登录] 2008-10-17 11:03 raof01

我也觉得codeblocks好用。如果在linux上,vim+plugins会是相当好的选择,anjuta也不错。
当然,如果在win上开发app或者做prototype,还是vs比较好,毕竟是RAD工具嘛。
如果不做RAD,自己编写makefile和脚本来管理src树、进行开发能极大提高效率  回复  更多评论   

# re: 用Eclipse+gcc编译器开始你的旅程[未登录] 2012-09-14 22:17 cc

非常感谢,随着这是楼主2008年的帖子了,但还是给了我很大的帮助,真的非常感谢想您这样热心的人。
我现在用的是笔记本自带的win7家庭普通版,64位。
用的是C/C++ Eclipse,Build id: 20120614-1722
Mingw的版本是mingw-get-inst-20120426

现在的Mingw安装和你的截图已经有些出入了,可以在安装Mingw的时候选择同时安装MSYS了。

不过目前我用起来还是有点小问题,点run运行C代码的时候,会提示
Launch failde. Binary not found.
后来找到办法在Eclipse中的project中建立target解决了,虽然麻烦了点,但至少可以正常编译。

还是要谢谢楼主,之前用Eclipse没成功,放弃了很长时间了。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


特殊功能