当前位置:中国星空学习网首页>Linux/DOS>Linux基础>正文  
GNU/Linux开发第一步

 

目前,很多朋友学完了C语言,但并不能在GNU/Linux系统下进行编程开发。究其原因,GNU/Linux系统还未大面积普及是大碍之一,另外,人们不熟悉GNU/Linux系统下的开发工具也是关键。本文就是以“用例”的形式讲述在GNU/Linux系统下如何进行应用软件开发的基础和常识,为将来在GNU/Linux系统中进行大规模或企业级开发铺路。所谓“用例”,就是通过简单的例子来学习,最终达到能在自己的实际中应用的目的。

本文要求读者熟练Linux操作系统的常用操作,掌握C语言语法,能理解Linux系统的组成原理和了解Shell和Perl等脚本语言。

平台选择

首先,从事GNU/Linux(以下简你Linux)系统下的应用开发,应该有一个合适的操作平台和开发环境,所以选择和安装Linux操作系统成为Linux开发者的第一课。目前可供选择的Linux操作系统种类很多,如Red Hat(最新版名为Fedora)、SuSE、Mandrake和中科红旗(Red Flag),还有开源组织中有名的Debian等。虽然版本很多,但它们在底层系统组成上的差别是微乎其微的。我们以Red Hat 9.0为开发平台,以后的操作和开发都在这一系统平台上进行。

开发系统的组成

图1简要说明了Linux系统开发工具的组成。



图1 开发系统组成图



Linux操作系统内核底层的开发工具和辅助工具,有的是直接建立在内核基础上,如Shell、GCC和Make等;有的是建立在脚本语言的基础之上的,如Automake、Autoconf和Libtool等。它们是Linux操作系统外层的图形界面开发工具(GTK+、QT等)和网络应用开发工具(Perl、PHP和Python等)的基础和过渡。掌握了底层开发工具,对外层应用开发是有好处的,这样可以加快和优化外层应用开发,从而达到开发速度和开发质量的和谐统一。

慎选IDE

本文讲述的程序编辑工作多数是用Linux系统中常用的Emacs和vi来做,在终端窗口中进行命令编译调试。熟悉Windows下编程的朋友们会质疑为什么不用IDE(集成开发环境),是Linux下没有吗?答案当然是否定的。Linux下有很多IDE,事实上Emacs就是一个非常好的IDE,其它的还有CodeForge、ANJUTA和Kdeveloper等。对编程人员来说,IDE在编译控制的底层隐藏了很多东西,如果软件开发者真正了解和掌握了这些东西,对开发出更好的应用程序是大有帮助的。

对于IDE可以这么比喻,它好象是飞机上的自动驾驶仪,有了它飞行员会轻松许多,但如果飞行员没有真正掌握飞机的驾驶技术,在飞行中如果自动驾驶仪失灵的话,坠机是必然的,这样的飞行员是不能让他驾机的。编程人员也如此,只用IDE开发软件是不够的。

开始动手

坐谈论道不如起而躬行。下面就从一个简单的C语言源文件的编译开始,研究这些内容。

首先是安排好目录。在自己的用户目录下,创建一个总的目录learn-gnu,然后在此目录下创建第一个学习目录learn-1,在此目录下用Emacs编辑hello.c文件,输入如下内容:

//hello.c#include <stdio.h>int main(int argc, char *argv[]){	int i;	if(argc<=1)	{	printf("The program name is :%s\n", argv[0]);	}	else	{	printf("The program name is :%s\n", argv[0]);	for(i=1; i<argc; i++)	printf("The argument %d is : %s\n", i, argv[i]);	}}


这段代码试验了命令行参数及其简单的用法,正常情况下在终端中输入下面的命令即可编译:

# gcc hello.c -o hello


编译后输出可执行文件hello,执行./hello即可输出下面的语句:

The program name is :./hello


这是C语言初学者学到的最简单、最原始、最直接、也是最有效的编译方法,测试方法也是最简单的。因为所给用例的代码也比较简单,不用太复杂的方法。

这里没有用很经典的“Hello world”程序,其原因是笔者在辅导一些学生们学习C语言课程时,发现他们对这个程序还不太理解。

有没有更好的办法来编译这个源程序呢?可以编写一个简单的Makefile文件,使之自动编译源程序,生成可执行文件,表1为Makefile文件的内容。

CC = gcc	            其中执行make或make all即执行all:all: hello.c	        后面的命令,即编译;$(CC) hello.c -o hello	make clean 就执行clean:后面的命令,clean:	                即清除编译结果。rm hello -f


用Emacs编辑它并和上面的hello.c保存到同一文件目录,注意文件名为Makefile,然后,在终端中输入make命令,此时会出现下面的情况:

# make# gcc hello.c -o hello


再执行列目录命令,会发现已生成可执行文件hello:

# lshello  hello.c  Makefile


下面是多个参数的输出结果,相信会对命令行参数有初步的了解。

# ./hello abc def 123The program name is :./helloThe argument 1 is : abcThe argument 2 is : defThe argument 3 is : 123


Makefile是Make工具默认的配置文件,执行make命令时,Make自动查找Makefile文件。用多个C语言源文件来编译时,使用Make会让编译过程更加快捷有效。因为Make是按源文件的更新时间判断是否进行编译的,即改动了哪个文件就编译哪个文件,未改动的就不做处理。

这里以一个稍复杂的例子来说明。一个项目由三个C语言源文件a.c、b.c和hello.h构成,其中a.c和b.c中都包含hello.h,最终输出的可执行文件为hello。表2为这个Makefile文件的内容。





想进一步学习Make的使用和Makefile文件的编写,可以看一下它的参考文档,网址是http://www.gnu.org/manual/make-3.79.1/html_chapter/make_toc.html。

如果源程序再复杂一些,例如多一些源文件和附加一定数量的资源(如图像和文档等),或者涉及到系统中的其它支持(如需要系统安装有文档处理工具,语法检测工具,某些开发工具的开发库等)时,再编写Makefile文件就会变得非常麻烦,也非常容易出错。这种情况可以使用Autoconf 、Automake和Libtool等工具来完成这一工作,这让Makefile有更多的功能,编译更加完备,检测更加全面,而且还多出了安装、打包发布等更多新功能。

(责任编辑:代君利)j30B0j30B0j30B0

 

上一篇: 走进Linux世界——系统安装(1)
下一篇: 企鹅形象与Linux
站内公告
栏目导航
 Windows系统
 Linux/DOS
 办公应用
 工具软件
 图形图象
 网络应用
 安全防御
 网络编程
 软件教程
 实用技术
最新文章
中国星空图片网
·人体艺术
·性感美眉
·生活自拍
·幽默搞笑
·超级帅哥
·精彩万花筒
·梦幻景色
中国星空探索网
·神秘追踪 灵异接触
·鬼故事 灵异空间 图片
·未解之谜 探索宇宙
中国星空两性网
·两性图文 我的性事 情人 成人幽默
·性爱技巧 两性测试 性爱误区
·性事花边 生育避孕 性保健 性疾病
·两性生理 文化 讨论 心理 知识
·爱人同志 非常男女 一夜情
中国星空算网命
·手机吉凶 QQ号码吉凶 周公解梦
·塔罗牌测试 狗年运程
·关公灵签 紫薇斗数 八字排盘
·测试:你的成功指数有多少
·测验你的家庭是否美满?
·面相: 面型 眼睛 耳朵 口唇
·手相:拉你一把奶油桂花手
·测试:你能成为大富翁吗?
联系方式 设为首页
中国星空旗下---中国星空学习网    Copyright 2005-2050 Year   xx.happy369.com  Networks.All rights reserved
中国星空网所有内容均来源于网络,版权属于原作者,如侵犯到您的权益,请与我们联系,我们将尽快予以删除或处理。
中国星空不承担由于内容的合法性及健康性所引起的一切争议和法律责任。
陕ICP备05011765号 联系我们 
《女人如烟》--演唱:魏佳艺