没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
下载
第1章 Linux软件开发概述
1.1 关于Linux
L i n u x于1 9 9 1 年诞生于芬兰。大学生Linus To r v a l d s,由于没有足够的钱购买昂贵的商用操
作系统,于是自己编写了一个小的操作系统内核,这就是 L i n u x的前身。Linus To r v a l d s将操作
系统的源代码在 I n t e r n e t上公布,受到了计算机爱好者的热烈欢迎。各种各样的计算机高手不
断地为它添加新的特性,并不断地提高它的稳定性。 1 9 9 4 年,Linux 1.0正式发布。现在,
L i n u x已经成为一个功能强劲的 3 2 位的操作系统。
严格地说, L i n u x 只是一个操作系统内核。比较正式的称呼是 G N U 操作系统,它使用
L i n u x 内核。G N U的意思是 G N U ’s not Unix(G N U不是U n i x )
—
一种诙谐的说法,意指 G N U
是一种类U n i x的操作系统。 G N U 计划是由自由软件的创始人 S t a l l m a n 在2 0 世纪8 0 年代提出的
一个庞大的项目,目的是提供一个免费的类 U n i x 的操作系统以及在上面运行的应用程序。
G N U 项目在初期进展并不顺利,特别是操作系统内核方面。 L i n u x适时而出,由于它出色的性
能,使它成为G N U 项目的操作系统的内核。从此以后, G N U 项目进展非常迅速:全世界的计
算机高手已经为它贡献了非常多的应用程序和源代码。
L i n u x是遵从G P L 协议的软件,也就是说,只要遵从 G P L协议,就可以免费得到它的软件
和源代码,并对它进行自由地修改。然而,对一般用户来说,从 I n t e r n e t或者其他途径获得这
些源代码,然后对它们进行编译和安装是技术难度很高的工作。一些应用程序的安装也都非
常复杂。因而,有一些公司如 Red Hat、VA等开始介入L i n u x 的业务。它们将L i n u x 操作系统以
及一些重要的应用程序打包,并提供较方便的安装界面。同时,还提供一些有偿的商业服务
如技术支持等。这些公司所提供的产品一般称为 L i n u x 的发布版本。目前比较著名的 L i n u x 发
布版本有以下几种:
Red Hat
—
最著名的L i n u x服务提供商,I n t e l、D e l l等大公司都对其有较大投资,该公司
前不久收购了开放源代码工具供应商 C y g n u s公司。
S l a c k Wa r e
—
历史比较悠久,有一定的用户基础。
S U S E
—
在欧洲知名度较大。
Tu r b o L i n u x
—
在亚洲,特别是日本用户较多。该公司在中国推出了 TurboLinux 4.0、
4 . 0 2 和6 . 0的中文版,汉化做得很出色。
D e b a i n
—
完全由计算机爱好者和L i n u x社区的计算机高手维护的 L i n u x 发布版本。
L i n u x进入中国后,在我国计算机界引起了强烈的反响,最近两年,也出现了许多汉化的
L i n u x 发布版本,影响较大的有以下几种:
X t e a m L i n u x
—
北京冲浪平台公司推出的产品,中国第一套汉化的 L i n u x发布版本。
第一部分 Linux GUI 编程
框架及编程基础
B l u e P o i n t
—
1 9 9 9 年底正式推出的产品,内核汉化技术颇受瞩目。
红旗L i n u x
—
中国科学院软件研究所和北大方正推出的 L i n u x发布版本。
从本质上来说,上面所有发布版本使用的都是同样的内核(或者版本略有不同),因而,它
们在使用上基本上没有什么区别。但它们的安装界面不一样,所包含的应用程序也有所不同。
L i n u x之所以大受欢迎,不仅仅因为它是免费的,而且还有以下原因:
1) Linux是一个真正的抢占式多任务、多线程、多用户的操作系统。
2) Linux性能非常稳定,功能强劲,可以与最新的商用操作系统媲美。
3) Linux有非常广泛的平台适应性。它在基于 I n t e l 公司的x 8 6 (也包括A M D 、C y r i x 、I D T)
的计算机、基于A l p h a 的计算机,以及苹果、S u n 、S G I等公司的计算机上都有相应的发布版本,
甚至在A S / 4 0 0 这样的机器上都能找到相应的版本。 L i n u x 还可以在许多P D A和掌上电脑以及嵌
入式设备上运行。
4) 已有非常多的应用程序可以在 L i n u x 上运行,大多数为 SCO Unix开发的应用程序都能
在L i n u x 上运行(借助于i B C S 软件包),甚至还比在 SCO Unix上运行速度更快。借助 D o s e m u,
可以运行许多D O S应用程序,而借助Wa b i或Wi n e,还可以运行许多为Wi n d o w s 设计的软件。
5) Linux是公开源代码的,也就是说,不用担心某公司会在系统中留下后门 (软件开发商
或程序员预留的,可以绕开正常安全机制进入系统的入口 )。
6) 只要遵从G P L协议,就可以自由地对 L i n u x进行修改和剪裁。
当然,L i n u x 的优点决不止于此。对计算机专业人员来说, L i n u x 及其相关应用程序也是
学习编程的绝好材料,因为这些软件都提供了完整的源代码。
L i n u x的出现为我国软件产业赶超世界先进水平提供了极好的机遇,也为我国软件产业反
对微软的垄断提供了有力的武器。
1.2 关于Linux的桌面环境
目前使用L i n u x 主要在于服务器端。在 I n t e r n e t上有很多服务器都在使用 L i n u x。但是,一
个操作系统要想得到普及,并占据一定的市场份额,必须要使非计算机专业人士都可以轻松
掌握这种系统。而L i n u x作为一种类U n i x 操作系统,对它的操作一般都是通过复杂的 S h e l l命令
进行的。因而,应该有一种简便易学的图形用户接口( Graphics User Interface,G U I),使用户
使用鼠标就可以完成大多数工作。
在L i n u x中,G U I 由以下几个部分组成:
• 窗口系统—组织显示屏上的图形输出并执行基本的文本和绘图功能。
• 窗口管理器—负责对窗口的操作(比如最小化、最大化、关闭按钮的形状,窗口边框外
观等)以及输入焦点的管理。
• 工具包—带有明确定义的编程界面的常规库。
• 风格—指定应用程序的用户界面外观和行为。
在L i n u x 发展的初期,众多的计算机专家为它贡献了多种图形用户接口,如 F V W M 9 5、
A f t e r S t e p 等。这些接口模仿了 Windows 95、M a c i n t o s h 、N e s t S t e p、A m i g a、Unix CDE等桌面
环境。这些G U I 在一定程度上来说只是其他图形接口的仿制品,不能提供优秀的操作系统所
需要的特性。其后,自由软件社区的一批计算机专家开始了 K D E 项目(K Desktop Environment,
K桌面环境),目的是提供一个开放源代码的图形用户接口和开发环境。该项目取得了极大的
2使用第一部分 Linux GUI 编程框架及编程基础
下载
成功,K D E 成为许多L i n u x 发布版本的首选桌面环境。 G N U / L i n u x 项目因此而得到蓬勃发展。
但是,K D E是基于Troll Te c h n o l o g i e s公司的Q t 库的。Q t库是一个跨平台的C + +类库,可以用于
多种U n i x 、L i n u x、Wi n 3 2 等操作系统。Q t 并不是遵从G P L 或L G P L协议的软件包。它的许可条
件是:如果使用它的免费版本开发应用程序或程序库,则所开发的软件必须开放源代码;如
果使用它的商用版本,则可以用以开发私有的商用软件。另外, Q t 库是属于Tr o l l公司的产品,
一旦Tr o l l公司破产,或者被收购,自由软件事业将受到严重打击。
1 9 9 7 年由墨西哥国立自治大学的 Miguel de Icaza领导的项目组开始了 G n o m e开发计划。
G n o m e是GNU Network Object Model Environment(G N U,网络对象模型环境)的缩写。该计划
的最初目的是创建一种基于应用程序对象的架构,类似于微软公司的 O L E 和 C O M 技术。然而,
随着项目的进展,项目的范围也迅速地扩大;项目开发过程中有数百名程序员加入进来,编
写了成千上万行的源代码。该项目进展很快, 1 9 9 8 年发布了Gnome 1.0。目前的最新版本是于
1 9 9 9 年1 0 月发布的October Gnome。现在,G n o m e已成为一个强劲的 G U I应用程序开发框架,
并且可以在任何一种U n i x系统下运行。G n o m e使用的图形库是G t k +
—
最初为了编写G I M P 而
创建的一套构件库,它是基于 L G P L 创建的,可以用它来开发开放源代码的自由软件,也可以
开发不开放源代码的商用软件。 G n o m e 的界面与K D E 的界面是类似的(G n o m e的目的之一就是
创建一套类似K D E的桌面环境),熟悉K D E 的用户无需学习就能够使用 G n o m e 。由于以上几个
原因,G n o m e 已经成为大多数L i n u x 发布版本的首选桌面环境。
由于G n o m e 项目的成功,1 9 9 8 年11月Q t库的开发者Tr o l l 公司宣布修改许可证协议, Q t库
将成为自由软件。但是获取 Q t 库的许可证很不方便,况且 G n o m e 的进展也很不错,因而,只
要有可能,应该避免使用Q t 库以及K D E。
从用户的角度看, G n o m e 是一个集成桌面环境和应用程序的套件。从程序员的角度看,
它是一个应用程序开发框架 (由数目众多的实用函数库组成 )。即使用户不运行G n o m e桌面环境,
用G n o m e 编写的应用程序也可以正常运行,但是这些应用程序是可以很好地和 G n o m e 桌面环
境集成的。G n o m e桌面环境包含文件管理器,它用于任务切换、启动程序以及放置其他程序
的“面板”、“控制中心”(包括配置系统的程序以及一些小东西 )等。这些程序在易用的图形界
面背后隐藏了传统的 UNIX Shell。G n o m e 的开发结构使开发一致的、易用的和可互相操作的
应用程序成为可能。
1.3 Linux系统中的软件开发
1.3.1 开发所使用的库
在L i n u x 下开发G U I程序的首要问题是采用什么样的图形库。在 L i n u x的发展历史中曾经出
现过多种图形库,但是由于自由软件的特点(没有技术方面的承诺),使得无人继续对它们进行
维护,或者其他方面的原因,这些库都已慢慢地被人遗忘了。
G t k +(GIMP To o l K i t,G I M P 工具包)是一个用于创造图形用户接口的图形库。 G t k + 是基于
L G P L 授权的,因此可以用 G t k + 开发开放源码软件、自由软件,甚至商业的、非自由的软件,
并且不需要为授权费或版权费花费一分钱。之所以被称为 G I M P 工具包因为它最初用于开发
“通用图片处理程序”(General Image Manipulation Program,G I M P ),但是 G t k已在大量软件
项目,包括G n o m e 中得到了广泛应用。 G t k +是在Gdk(GIMP Drawing Kit,G I M P绘图包)的基
第1章 L i n u x 软件开发概述使用3
下载
础上创建的。G d k是对低级窗口函数的包装 (对X window系统来说就是X l i b )。
读者可能会看到,在本书中既有 G T K,又出现了G t k + 。一般用G T K代表软件包和共享库,
用G t k +代表G T K的图形构件集。
G T K的主要作者是:
Peter Mattis petm@x c f . b e r k e l e y . e d u
Spencer Kimball spencer@xcf.berkeley.edu
Josh MacDonald jmacd@xcf.berkeley.edu
G t k + 图形库使用一系列称为“构件”的对象来创建应用程序的图形用户接口。它提供了
窗口、标签、命令按钮、开关按钮、检查按钮、无线按钮、框架、列表框、组合框、树、列
表视图、笔记本、状态条等构件。可以用它们来构造非常丰富的用户界面。
在用G t k + 开发G n o m e 的过程中,由于实际需要,在上面的构件基础上,又开发了一些新
构件。一般把这些构件称为 G n o m e 构件(与G t k + 构件相对应)。这些构件都是 G t k + 构件库的补
充,它们提供了许多 G t k +构件没有的功能。从本质上来说, G t k + 构件和G n o m e构件是完全类
似的东西。
G T K 本质上是面向对象的应用程序编程接口 ( A P I ) 。虽然完全是用C写成的,但它仍然是
用类和回调函数(指向函数的指针)的方法实现的。
1.3.2 Gnome的开发结构
只使用 G t k + 构件也可以开发出优秀的 L i n u x 应用程序,但是 G n o m e 构件,特别是
G n o m e A p p、G n o m e U I I n f o等,使开发界面一致的应用程序变得更加容易。 G n o m e的一些新特
性,如p o p t参数分析,保存应用程序设置等也是 G t k + 构件所没有的。
G n o m e的应用程序开发结构核心是一套库 ,都是由通用的ANSI C语言编写的,并且倾向于
使用在类U N I X的系统上。其中涉及图形的库依赖于 X Wi n d o w 系统。G n o m e 差不多对任何语言
都提供了Gnome API接口,其中包括 A d a 、S c h e m e、P y t h o n、 P e r l、 To m、E i ff e l、D y l a n 以
及Objective C等。至少有三种不同的 C + +封装。本书只介绍有关库的 C语言接口,不过,对使
用其他语言绑定的用户来说,它也很有用,因为从 C到其他语言之间的转换都是非常直接的。
本书包含G n o m e 库1 . 0 版本 (包括兼容的 b u g 补丁版,比如 1 . 0 . 9
—
所有 1 . 0 . x 版本都是兼容
的)。
G n o m e的开发架构包含以下一些内容:
1. 非Gnome 库
G n o m e并不是从头开始的,它充分继承了自由软件的传统
—
其中许多内容来自于G n o m e
项目开始之前的一些函数库。其中一些库 G n o m e 应用程序开发架构的一部分,但是不属于
G n o m e 库
—
我们称之为非 G n o m e 库。可以在G n o m e 环境中使用这些库函数。主要有以下几
种:
G l i b G l i b 是G n o m e的基础,它是一个 C工具库,提供了创建和操作常用数据结构的实用
函数。它也涉及到了可移植性问题,例如 ,许多系统缺乏s n p r i n t f ( )函数,但是g l i b包含了一个,
称为g _ s n p r i n t f ( ) ,它能保证在所有平台上使用,并且比 s n p r i n t f ( ) 更安全 (它总是将目标字符
串以N U L L 结尾)。Gnome 1.0中使用g l i b的 1 . 2 版本,可以和任何 1 . 2系列的g l i b一起工作( 1 . 2 . 1 、
1 . 2 . 2,等等)。
4使用第一部分 Linux GUI 编程框架及编程基础
下载
Gtk+ G t k + (GIMP To o l k i t的缩写),是在G n o m e 应用程序中使用的G U I工具包。G t k +最初
是为了设计G I M P而引入的(GNU 图片处理程序),但是现在已变成通用的库。G t k +依赖于g l i b 。
G t k + 包中包含了G d k ,它是对底层的 X Wi n d o w系统库X l i b 的简化。由于G t k + 使用了G d k 而不
是直接调用X l i b,因此G d k的移植版本允许G t k +运行在不同于X 但只有相对较少的修改的窗口
系统上。G t k +和G i m p 已经移植到了 Wi n 3 2 平台(3 2 位的Wi n d o w s 平台,包括Windows 95/98、
Windows NT/2000)上。
对G n o m e应用程序来说,G t k + 具有以下的特性:
1) 动态类型系统。
2) 用C语言编写的对象系统,可实现继承、类型检验,以及信号 /回调函数的基础结构。
3) 类型和对象系统不是特别针对 G U I 的。
4) GtkWi d g e t对象使用对象系统,它定义了G t k + 的图形组件的使用接口。
5) 大量的G t k Wi d g e t 子类(构件)。
G n o m e在基本G t k + 构件集合的基础上添加了许多其他构件。 Gnome 1.0是在Gtk+ 1.2版本
的基础上完成的。
ORBit O R B i t是 一个用C开发的CORBA 2.2 ORB。和其他O R B 相比,它短小精悍,但速
度更快,同时还支持 C语言映射。O R B i t 是以一整套库函数的方式实现的。 C O R B A,或称作
通用对象请求中介构架( Common Object Request Broker Architecture),是一套对象请求中介,
或称为O R B的规范。一个 O R B 更类似于动态链接程序,但是它以对象的方式操作,而非子程
序调用。在执行过程中,程序能够请求一个特定的对象服务; O R B 可定位对象并且创建对象
和程序连接。例如 ,一个电子邮件程序可以请求 a d d r e s s b o o k对象,并且利用它查找人名。与动
态链接库不同,C O R B A可以在网络内很好地运行,并且允许不同编程语言和操作系统之间进
行交互。如果熟悉Wi n d o w s 操作系统下的DCOM, 那么C O R B A与之类似。
Imlib I m l i b (图片库)提供一些例程,其中包括加载、存储、显示,以及定绘制各种流行
的图像格式 (包括 G I F 、J P E G、P N G以及T I F F ) 的函数。它包括两种版本: X l i b - o n l y 版本和基
于G d k的版本。G n o m e 使用 G d k 版本。
2. Gnome库
下面所介绍的库是G n o m e - l i b s包的一部分,并且是专门为 G n o m e项目开发的。
libgnome l i b g n o m e 是一些与图形用户接口无关的函数集合, G n o m e应用程序可以调用
其中的函数。它包含分析配置文件的代码,也包含与一些外部实用程序的接口,比如国际化
编程接口(通过GNU gettext包)、变量解析 (通过p o p t包)、声音编程接口 (通过E n l i g h t e n m e n t
D a e m o n,e s o u n d ) 等。G n o m e - l i b s包考虑了与外部库之间的交互,因此程序员无需关心库的实
现或可用性。
libgnomeui l i b g n o m e u i包含了与G U I 相关的G n o m e代码。它由为增强和扩展 G t k +功能而
设计的构件组成。 G n o m e 构件通常使用用户接口策略,以提供更方便的 A P I 函数(这样程序员
需要指定的东西较少)。当然,这也让应用程序界面更一致。
l i b g n o m e u i主要包含:
1) GnomeApp构件 一般用来为应用程序创建主窗口。它使用 G n o m e D o c k构件,允许用
户重新排列工具栏,还可以将工具条从窗口上拖开。
2) GnomeCanvas构件 用来编写复杂的、无闪烁的定制构件。
第1章 L i n u x 软件开发概述使用5
下载
剩余325页未读,继续阅读
资源评论
- xiaojunyingying2013-04-17书很好 值得一看 谢谢分享
- wodeqiongqiong2013-08-14绝对好的书
- ouyqq2013-01-10这本书很不错,linux经典
- lcm1192013-01-21给别人下的,据反馈还不错,算是一本不错的教材。
11000000
- 粉丝: 83
- 资源: 235
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功