Linux应用程序开发指南使用gtk+ gnome库.pdf
《Linux应用程序开发指南使用gtk+ gnome库.pdf》由会员分享,可在线阅读,更多相关《Linux应用程序开发指南使用gtk+ gnome库.pdf(326页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下载第1章 Linux软件开发概述1.1 关于LinuxL 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只
2、是一个操作系统内核。比较正式的称呼是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项目进展非常迅速:全
3、世界的计算机高手已经为它贡献了非常多的应用程序和源代码。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
4、 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
5、 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 t1 9 9 9年底正式推出的产品,内核汉化技术颇受瞩目。红旗L i n u x中国科学院软件研究所和北大方正推出的 L i n u x发布版本。从本质上来说,上面所有发布版本使用的都是同样的内核(或者版本略有不同),因而,它们在使用上基本上没有什么区别。
6、但它们的安装界面不一样,所包含的应用程序也有所不同。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
7、和掌上电脑以及嵌入式设备上运行。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进行修改和剪裁。当然
8、,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操作系统,对它的操作一般都是
9、通过复杂的 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
10、 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项目因此而得
11、到蓬勃发展。但是,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
12、领导的项目组开始了 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应用程序开发框架,并且可以在
13、任何一种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公司宣布修改许
14、可证协议,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桌面环境包含文件管理器,它用于任务切换、启动程序以及放置其他程序的“面板”、“控制中心”(包括配置系统的程序以及一些
15、小东西)等。这些程序在易用的图形界面背后隐藏了传统的 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
16、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)。读者可能会
17、看到,在本书中既有G T K,又出现了G t k+。一般用G T K代表软件包和共享库,用G t k+代表G T K的图形构件集。G T K的主要作者是:Peter Mattis petmx c f.b e r k e l e y.e d uSpencer Kimball spencerxcf.berkeley.edu Josh MacDonald jmacdxcf.berkeley.edu G t k+图形库使用一系列称为“构件”的对象来创建应用程序的图形用户接口。它提供了窗口、标签、命令按钮、开关按钮、检查按钮、无线按钮、框架、列表框、组合框、树、列表视图、笔记本、状态条等构件。可以用它们
18、来构造非常丰富的用户界面。在用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应用程序,但是
19、 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、
20、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
21、n o m e库我们称之为非G n o m e库。可以在G n o m e环境中使用这些库函数。主要有以下几种:G l i bG 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一
22、起工作(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 但只有相对较少的修改的窗口系统上
23、。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+构件集合的基础上添加了许多其他构件。Gno
24、me 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可定位对象并且创建对象和程序连接。例如,一个电
25、子邮件程序可以请求 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库下面所介绍
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux应用程序开发指南使用gtk+ gnome库 Linux 应用程序 开发 指南 使用 gtk gnome
限制150内