如何在Linux下用eclipse开发C/C++程序
<br />from:http://hi.baidu.com/yutou410/blog/item/a50feabf8d6cb90b18d81f22.html<br />引言:在生活中,我们经常为了做一件事而花时间去做另一件事,就像我们为了装Linux而去学怎样使用VMware,让人觉得工作的重点转移啦。这次作业感觉上也还是这样。<br />作业要求:<br />• 学习在Li
from:http://hi.baidu.com/yutou410/blog/item/a50feabf8d6cb90b18d81f22.html
引言:在生活中,我们经常为了做一件事而花时间去做另一件事,就像我们为了装Linux而去学怎样使用VMware,让人觉得工作的重点转移啦。这次作业感觉上也还是这样。
作业要求:
• 学习在Linux下的C编程
• 要求编写代码:98页Figure4.8的代码,编译,并运行。
• 要求在完成以上步骤后,明白进程在fork、execlp、wait 等函数参与下的执行过程。
作业分析:
这次作业说是操作系统,其实最难的还是程序开发环境的构建——在Linux下搭建能够像在Windows那样容易编程的开发环境,如Microsoft Visual Studio集成开发环境,然后学习如何在这个环境下编程,其次才是分析课本上代码及结果。
在这开始之前,让我们先回忆下程序编译的流程:编写代码——链接编译——运行。
那么我们在Linux下都哪些程序开发环境。据我们小组研究,主要有两种:一种是最原始的,按照程序的编译流程一步一步分开操作,一种是在一个集成环境下把编写链接运行都放在同一个环境下。
原始方法
首先我介绍下最原始的方法,同时也是最简单构建的方法,这种方法只要求你的Linux安装了GCC等开发工具。如果你在安装Linux时选择了程序开发选项,那么你的Linux就有了GCC等开发工具。
大概步骤
让我介绍下我们大概要执行的步骤,先用vi等文本工具编写C源文件,然后用GCC等编译工具编译我们的源程序输出可执行文件,最后在终端执行这个可执行文件。
终端
我们主要是在“终端(terminal)”中完成我们以上的几个动作。所以先讲下“终端”的一些入门知识。Linux都有“终端”,类似Windows的command窗口。笔者用的是Fedora,点击 应用程序>附件>终端,即可,如图所示,
如图。在终端中有许多命令,在这我只介绍几个我们需要用到的命令。
ls –al
显示当前文件夹中的所有文件的属性,如图
chmod 755文件名
改变文件的权限,755表示让文件可以执行,当我新建一个源程序时,可能还只有读写的权限没有执行的权限。
./文件名
执行文件,这个命令是用来执行我们的写的程序的。
vi编辑器
由于我们需要在vi编写我们的程序,而vi的操作方式比较麻烦,所以我们有必要先介绍下vi的基本用法。
在终端中输入如下命令
vi HelloWorld.c
即可用vi新建或者编辑一个名为HelloWorld.c的文件,然后自动进入vi程序。在开始输入代码之前,最好先按下Insert键,表示以插入形式 输入。然后输入我们输入的代码。最后我们要保存退出来,先按”Esc”键,按输入”:”(冒号),这时光标会自动跑到窗口最底部。再输入wq,按 Enter就可以退出vi回到终端模式。这里w表示保存,q表示
退出。
然后在终端输入
ls –al
看下我们编写的程序HelloWorld的权限,如图。
可以看出HelloWorld的没有执行的权限,我们再输入
Chmod 755 HelloWorld.c
然后再输入
Ls –al
我们可以看到HelloWorld的属性变成可读写啦,同时颜色也变啦。如图
接着链接编译和执行的时候,输入
gcc HelloWorld.c
终端会自动链接编译HelloWorld生成一个叫a.out的文件
然后输入
./a.out
你可以看到输出
Hello,Pure_OS!
的字符,如图所示。
总结:这种方法基本上不用构建,但是写起程序来真的N麻烦。所以我们急需寻找其它方便点的开发环境,最好就像Windows下的Microsoft Visual Studio那样。于是我们项目组找到了这样一种方法,eclipse。
Eclipse集成开发环境
介绍
Eclipse是由IBM,Borland等资助的开源开发环境,就像Microsoft Visual Studio一样,将编写源程序,链接编译,执行都整合到同一个平台,不同的是它可以通过插件方式进行扩展,在这里我们将在Linux下构建C/C++的 集成开发环境。执行Eclipse必须用到Java Development Kit(简称JDK),而Fedora(或Red Hat)发行套件中没有包含JDK所以需要先安装JDK。还有,要在Eclipse 上面开发C/C++程序,需要另外安装plug-ins,在此我们使用的是C/C++ Development Tools(CDT)。CDT 整合了gcc、make、gdb等GUN 工具。
开发环境搭建方法
Eclipse有两种安装方式,一种是全自动的,一种是纯手工的。
全自动方法
全自动方法就是用yum命令。这种比较推荐初学者用,很容易。
yum是一种自动安装软件的命令,它是通过yum.repos.d文件中的软件库的地址,而在软件库中自动下载安装软件。它的最大一个好处是,能把 某个软件的rpm包的关联包也一起下载(在Linux装rpm包最大一个问题是它可能有一些关联包,如果不事先下载安装这些包,是不能装该软件的)。
现在我来介绍以下具体的方法:
首先我们进入Linux操作系统,上ftp://202.116.77.31 ,从上面下载yum.repos.d.tgz到桌面。
然后打开终端,输入
#mv yum.repos.d.tgz /etc
(把yum.repos.d.tgz移动到/etc目录)
#cd /etc
#tar –zxvf yum.repos.d.tgz
(解压缩)
上面两个步骤是把我们软件库的地址设为我们中大的一个ftp资源库上。
最后,在终端输入
#yum install eclipse-platform.i386
(这个主要是下载安装eclipse 平台)
#yum install eclipse-cdt.i386
(这个是下载安装c和c++的)
纯手工搭建方法
但是有时下载的软件比较大,如果你Linux上设置的软件库是在他国的,那么安装的过程将会比较长,所以有时需要自己手动安装程序。我们组这两种方法都使用啦,杨逸文使用了自动安装,而我则使用了手工安装。下面讲解下怎样手动安装eclipse。
一、准备工作:下载必要软件JDK,eclipse,CDT
下载eclipse你可以到官方网站
http://www.eclipse.org/downloads/
如图所示,
点击Eclipse SDK 3.2.2,进入镜像选择页面,选择一个你认为会比较快的镜像下载即可。笔者下载的版本的文件名是eclipse-SDK-3.2.1-linux-gtk.tar.gz,
下载JDK你可以到Sun官方网站
http://java.sun.com/javase/downloads/index.jsp
下载最新版的JDK。笔者用的是jdk-6u1-linux-i586-rpm版,下载步骤如下:
在下载页面点击Java SE中的Java SE (JDK) 6进入版本选择页面,如图
点击6u1旁边的download,如图所示,
进入下载页面,选择accept,如图,再选择Linux Plaform-Java(TM)SE Development Kit 6Update 1中的Linux RPM in self-extracting file。如图
直接链接地址是
读者可以直接用迅雷下载这个链接。
请读者注意对照下你下载的文件名,你可能会发现笔者版本号6u1会不一样,有些版本号可能是3.2.1,还有注意不要下载windows版本的,在文件名中应该有linux,不能有windows的字符。下载将这个文件放到/opt文件夹中。
下载CDT你可以到官方网站
http://www.eclipse.org/home/categories/languages.php
下载最新版的CDT。
笔者使用的是org.eclipse.cdt-3.1.2-linux.x86.tar.gz。直接链接地址是
读者可以直接用迅雷下载这个链接。
二 、安装
1.cdt需要gcc等工具才能编程程序,所以要先确保你的Linux上安装了GCC等编译工具。
2.安装JDK
首先你需要以管理员的身份root进入Linux,否则可能没有权限安装程序。
打开终端,笔者用的是Fedora,点击 应用程序>附件>终端,即可,如图所示,
在终端输入
chmod +x jdk-6u1-linux-i586-rpm.bin
./jdk-6u1-linux-i586-rpm.bin
如图所示
chmod +x 文件名
是改变文件的权限,以便文件可以执行。后面加文件名,即你下载的JDK文件名。
./文件名
表示执行某个文件。文件名同样为你下载的JDK文件名。
然后进入JDK的安装程序,开头它会让你读很长的一段文章,你只要一直按确定就行,直到有提示输入yes/or的提示出现,你输入yes后系统就会自动安装JDK。如图所示。
安装好的JDK 会存在 /usr/java/jdk1.6.0_01 目录中。如图所示
读者请注意,由于你下载的版本号可能与我的不同,你路径可能是/usr/java/j2sdk1.4.0_01,最后面的是版本号,请记住这个版本号,这是你安装的版本号。
接下来设定Java的环境变量,同样在终端输入
export JAVA_HOME = /usr/java/jdk-1_5_0_06
export PATH = $JAVA_HOME/bin:$PATH
CLASSPATH=.:/usr/java/jdk-1_5_0_06/lib/tools.jar:$CLASSPATH
export CLASSPATH
如图所示,
同样要注意在相应的地方更改成你的版号,例如在第一条命令最后的地方要更改成你的版式本号;在第三条命令中间有个地方有版本号,你需要改成你的版本号。
3.安裝Eclipse
在此笔者把Eclipse放在在 /opt 下,只要把下载回来的压缩包解压就可以了;解压后得到eclipse目录。笔者在图形界面下直接右击文件选择“解压到此处”,在/opt就会出现eclipse的文件夹。如图所示,
你可以进入这个文件夹直接点击eclipse图标 启动eclipse。Eclipse 安装好后,已经内建了java开发环境(JDT)就可以直接开发Java 程序。 但还不能开发C/C++程序。
4.安装CDT
解压缩CDT文件夹,会得到features 和plugins 这两个目录,分别将这两个目录中的所有文件分别剪到/opt/eclipse下的对应目录里。
最后再重新运行eclipse,你可以开发C/C++的程序啦!
在eclipse如何开发C/C++程序
…………………………………………………………
程序分析
在这段程序中,我们最主要的是要了解fork()execlp()和wait()函数的用法。最后通过对它们的了解,从而理解整个程序运行的过程。(这里会着重讲fork函数)
fork,是分叉的意思。也就是说,它会起到一个“分叉”的作用。在Unix操作系统中,常常会用它来产生新的进程。那调用fork到底会发生什么 呢?首先,父进程会和子进程共用一段代码段,而数据段和堆栈段则会由父进程复制copy一份给子进程。当产生完毕,实际上父进程和子进程已经是两个独立的 进程,特别是数据段是分开的(虽然一开始是一样的,但经过各自的操作后,是可以变得不同的),并不共享数据。
如果fork成功,子进程中fork的返回值是0,父进程中fork的返回值是子进程的进程号,如果fork不成功,父进程会返回错误。在这段程序 代码,我们也许会产生误解。看到if-else结构,我们会以为这里分成3段,pid<0、pid==0和pid>0,当满足某一个条件时就 会实现某一段程序。但实际并非如此。我们可以这样认为,如果没有wait函数,父进程和子进程是并行运行的,而且步调一致(至于真正谁运行先,就要看具体 的操作系统)。在fork之后,它们进行不同的工作。而返回的pid,只是用来区分是父进程而是子进程。
再分析这段程序。当调用完fork之后,父进程会产生子进程,两个进程独立了。由于父进程用了wait函数,所以父进程会等子进程完成后再运行(此 时并非前面所讲的并行运行)。而子进程此时会运行execlp函数,执行“/bin/ls”,“ls”等命令。execlp的作用是在一个进程中运行另一 个程序。我们可以这样理解,一个进程一旦调用exec类函数,它本身就“死亡”了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新 程序分配新的数据段与堆栈段,唯一留下的,就是进程号,也就是说,对系统而言,还是同一个进程,不过已经是另一个程序了。
当子程序运行完后,父进程才printf(“Child Complete”)。
还有另一种方法在:用yum命令。
yum是一种自动安装软件的命令,它是通过yum.repos.d文件中的软件库的地址,而在软件库中自动下载安装软件。它的最大一个好处是,能把 某个软件的rpm包的关联包也一起下载(在Linux装rpm包最大一个问题是它可能有一些关联包,如果不事先下载安装这些包,是不能装该软件的)。
现在我来介绍以下具体的方法:
首先我们进入Linux操作系统,上ftp://202.116.77.31 ,从上面下载yum.repos.d.tgz到桌面。
然后打开终端,输入
#mv yum.repos.d.tgz /etc
(把yum.repos.d.tgz移动到/etc目录)
#cd /etc
#tar –zxvf yum.repos.d.tgz
(解压缩)
上面两个步骤是把我们软件库的地址设为我们中大的一个ftp资源库上。
最后,在终端输入
#yum install eclipse-platform.i386
(这个主要是下载安装eclipse 平台)
#yum install eclipse-cdt.i386
(这个是下载安装c和c++的)
更多推荐
所有评论(0)