Linux開發GUI應用程序概述
本文出自:http://www.swm.com.cn 作者:杜昆 (2001-11-06 08:00:00)
Linux歷史簡介

1991年,芬蘭大學生Linus Torvalds編寫了一個小的操作系統內核,這就是Linux的前身,
Linus Torvalds也由此成為了Linux之父。Linus Torvalds將Linux系統的源代碼在Internet上公
布,使Linux的發展受到了眾多計算機高手的鼎力相助,Linux從而不斷地增加新的特性,不斷地
提高穩定性。現在,Linux已經成為一個非常流行的操作系統。
Linux是遵從GPL協議。也就是說,只要遵從GPL協議,就可以免費得到它的軟件和源代碼,並對
它進行自由地修改。但對一般用戶來說,對Linux的源代碼進行編譯和安裝是難度很高的工作。
所以,一些公司介入Linux的業務,它們將Linux操作系統及一些重要的應用程序打包,並提供
較方便的安裝界面。這些公司所提供的產品一般稱為Linux的發布版本。
目前比較名的Linux發布版本有以下幾種:
RedHat最名的Linux服務提供商。
SlackWare歷史比較悠久的發行版本。
SUSE在歐洲知名度較大。
TurboLinux在亞洲用戶較多。該公司漢化做得很出色。
Debain完全由Linux社區的計算機高手維護的發布版本。
XteamLinux北京沖浪平台公司推出中國第一套漢化發布版本。
BluePoint內核漢化技術比較引人注目。
紅旗Linux中科院軟件所和北大方正推出的發布版本。

Linux的優點

Linux有眾多的優點,下面列出主要的幾個:
* Linux是一個多任務、多線程、多用戶的操作系統。
* Linux性能穩定,功能強大,可以與商用操作系統相提並論。
* Linux可以適應很多的平台。它可以在Intel公司的x86計算機及其兼容機、Alpha計算機,以
及蘋果等計算機上運行。 Linux還可以在許多嵌入式設備上運行。
* Linux之上的應用程序正在逐漸增多。大多數為UNIX開發的應用程序都能在Linux上運行。
Linux還可以在仿真軟件的幫助下運行許多DOS應用程序和Windows應用程序。
* 公開源代碼是Linux最大的優越性,只要遵從GPL協議,就可以自由地對Linux進行修改和剪裁,
以適應個人需要。

Linux的桌面環境

Linux有一套簡便易學的圖形用戶接口(GUI),用戶使用鼠標就可以完成大多數工作。在Linux中,
GUI由窗口系統,窗口管理器,工具包和風格等幾個部分組成。窗口系統用組織顯示屏上的圖
形輸出,窗口管理器用對窗口的操作如最小化等,工具包是用編程界面的庫,風格是應用程
序的用戶界面。
現在,Linux下的桌面環境主要包括KDE和Gnome兩種。
KDE(K Desktop Environment)桌面環境目的是提供一個開放源代碼的圖形用戶接口和開發環境。
KDE一度成為許多Linux發布版本的首選桌面環境。但是,KDE是基QT庫的。Qt最初並不遵從
GPL協議。所以,將KDE建立在QT之上是一件危險的事,它將依賴開發QT庫的公司。
所以,來的Linux發行版本中加入了Gnome主面環境。Gnome是
GNU Network Object Model Environment(GNU,網絡對象模型環境)的縮寫。Gnome的發展很快,
已成為一個強勁的GUI應用程序開發框架,可以在任何一種UNIX系統下運行。
Gnome使用的圖形庫是Gtk+構件庫,它是基LGPL協議的。Gnome的界面與KDE的界面類似,熟悉
KDE的用戶無需學習就能夠使用Gnome。所以,Gnome現在已經成為大多數Linux發布版本的首選
桌面環境。
Gnome是一個集成桌面環境,也是一個應用程序開發框架,由很多的函數庫組成。即使用戶不運
行Gnome桌面環境,用Gnome編寫的應用程序也可運行,但是這些應用程序是可以很好地和Gnome
桌面環境集成的。Gnome的開發結構使我們可以開發一致和易用的應用程序。

開發所使用的庫

Gtk+(GIMP ToolKit,GIMP工具包) Gtk+最初用開發GIMP,是一個用創造圖形用戶接口的圖
形庫。Gtk+是基LGPL授權的,因此可以用Gtk+開發開放源碼軟件的自由軟件或商業的非自由的
軟件。
Gtk+是在Gdk(GIMP Drawing Kit,GIMP繪圖包)的基礎上創建的。Gdk是對Xlib函數的包裝。我們
一般用GTK代表軟件包和共享庫,用Gtk+代表GTK的圖形構件集。
Gtk+圖形庫使用一些稱為“構件”的對象來創建GUI應用程序。它提供了窗口、按鈕、框架、列
表框、組合框、樹、狀態條等很多構件,可以構造豐富的用戶界面。
在Gtk+圖形庫構件基礎上,又開發了一些新構件,這些構件都是Gtk+構件庫的補充,它們提供了
許多Gtk+構件沒有的功能。一般把這些構件稱為Gnome構件。使用Gnome構件可以使開發界面一致
的應用程序變得更加容易。
Gnome的應用程序開發結構核心是一套庫,是由C語言編寫的,對很多語言都提供了GnomeAPI接口,
包括Ada、Scheme、Python、Perl、Tom、Eiffel、Dylan等。
Gnome的開發架構包含以下一些內容:
1. 非Gnome庫
Gnome繼承了自由軟件一些函數庫。其中一些庫Gnome應用程序開發架構的一部分,但是不屬
Gnome庫。可以在Gnome環境中使用這些庫函數。主要有以下幾種:
Glib庫 Glib是Gnome的基礎,它是一個C工具庫,提供了創建和操作常用數據結構的實用函數。
Gtk+庫Gtk+(GIMPToolkit的縮寫),是在Gnome應用程序中使用的GUI工具包。Gnome在基本Gtk+
構件集合的基礎上添加了許多其他構件。
ORBit庫ORBit是一個用C開發的CORBA2.2ORB。和其他ORB相比,它短小精悍,但速度更快,同時
還支持C語言映射。ORBit是以一整套庫函數的方式實現的。
Imlib庫 Imlib(圖片庫)提供一些例程,其中包括加載、存儲、顯示,以及定繪制各種流行的圖像
格式(包括GIF、JPEG、PNG以及TIFF)的函數。
2. Gnome庫
Libgnome庫Libgnome是一些與圖形用戶接口無關的函數集合,Gnome應用程序可以調用其中的函數。
Libgnomeui庫Libgnomeui包含了與GUI相關的Gnome代碼。它由為增強和擴展Gtk+功能而設計的構
件組成。libgnomeui主要包含:
(1)GnomeApp構件一般用來為應用程序創建主窗口。
(2)GnomeCanvas構件用來編寫定制構件。
(3)Gnome內置的pixmap用創建和使用對話框的例程。
Libgnomeui中還有幾種其他構件,如GnomeEntry、GnomeFilePicker等。
Libgnorba庫libgnorba提供與CORBA相關的實用程序。
3.其他庫
這些庫一般使用在Gnome應用程序中,但它不屬Gnome-libs:
Gnome-print庫Gnome-print提供一個虛擬輸出設備,一段代碼能輸出到一個打印預覽構件或
PostScript文件,還可以輸出到其他打印機格式。
Gnome-xml庫Gnome-xml能按照樹狀結構分析XML,也能按照XML輸出樹狀結構。
Guile庫 Guile是Scheme編程語言在一個庫中的實現,它使任何應用程序都能帶有一個嵌入式的
Sheme解釋器。
Bonobo庫Bonobo是一種對象嵌入式結構,類似Microsoft的OLE。

編程語言和編程工具

在Linux下的常用開發語言是C語言,Linux上的很多應用程序就是用C語言寫的。當然,也可以使
用其他語言。因為Gtk+和Gnome是用C語言編寫的,所以在開發Linux下的GUI程序時使用C語言是非
常方便的。Gtk+也提供與許多其他語言的接口。
一般的Linux發布版本中都提供了C編譯器gcc或egcs。使用gcc或egcs可以編譯C和C++源代碼。各
種C編譯器都要使用一些C語言實用函數。為了保証程序的可移植性,gcc沒有使用通用的C函數庫,
而是使用一種稱為glib的函數庫。glib也是Gtk+的基礎。它包含一些標準函數的替代函數和基本數
據結構的實現。
還有許多使用工具可以提高Linux下的編程效率,如gdb是優秀的C語言調試器,有非常豐富的調試
指令。automake和autoconf用由源代碼結構配置編譯選項,生成編譯所需的Makefile文件。
在Linux下開發GUI應用程序,像Windows平台上的可視化快速應用程序開發工具還很少。有幾種正
在開發的RAD(Rapid Application Development)工具,比如我們以將要介紹的Glade一種GUI生
成器,可以快速生成創建界面的C源程序。
arrow
arrow
    全站熱搜

    Bluelove1968 發表在 痞客邦 留言(0) 人氣()