作者:曹江華 Linux應用的廣泛發展使其越來越受到廣泛關注。Linux如此受歡迎,不僅僅因為它是免費的,而且還有以下原因: · Linux是一個真正的搶占式多任務、多線程、多用戶的操作系統。 · Linux性能穩定,功能強勁。 · Linux具有廣泛的平台適應性。它在基於Intel公司的x86(也包括A MD、VIA、IDT)的計算機、基於Alpha的計算機,以及蘋果、Sun、SGI等公司的計算機上都有相應的發行版本,甚至在AS/400上也能找到相應的版本,還可以在許多PDA和掌上電腦以及嵌入式設備上運行。 · 目前,已有為數不少的應用程序可以在Linux上運行。大多數為SCO Unix開發的應用程序都能在Linux上運行(借助於iBCS軟件包),甚至還比在SCO Unix上運行速度更快。借助Dosemu,可以運行許多DOS應用程序,而借助Wabi或Wine,還可以運行許多為Windows設計的軟件。 當然,Linux的優點決不止於此。它的出現為我國軟件產業趕超世界先進水平提供了極好的機遇,也為我國軟件產業反對微軟的壟斷提供了有力的武器。 Linux的迅速發展隨著計算機網絡的發展而擴大的。Linux可以說就是網絡的代名詞。目前Linux主要用於服務器端。在Internet上有很多服務器都在使用Linux。但是,一個操作系統要想得到普及,並占據一定的市場份額,必須要使非計算機專業人士都可以輕松使用這種系統。而Linux作為一種類Unix操作系統,對它的操作一般都是通過復雜的Shell命令進行的。因而,必須有一種簡便易學的圖形用戶接口(Graphics User Interface)GUI,使用戶使用鼠標就可以完成大多數工作。 在Linux中,GUI由以下幾個部分組成: · 窗口系統——組織顯示屏上的圖形輸出並執行基本的文本和繪圖功能。 · 窗口管理器——負責對窗口的操作(比如最小化、最大化、關閉按鈕的形狀,窗口邊框外觀等)以及輸入焦點的管理。 · 工具包——帶有明確定義的編程界面的常規庫。 · 風格——指定應用程序的用戶界面外觀和行為。 LINUX誕生不久,自由軟件社區的計算機專家就開始了KDE項目,目的是提供一個開放源代碼的圖形用戶接口和開發環境。該項目取得了極大的成功,KDE成為許多Linux發布版本的首選桌面環境。GNU/Linux項目因此而得到蓬勃發展。但是,KDE是基於Troll Technologies公司的Qt庫的。Qt庫是一個跨平台的C++類庫,可以用於多種Unix、Linux、Win32等操作系統。Qt並不是遵從GPL或LGPL協議的軟件包。1997年由墨西哥國立自治大學的Miguel de Icaza領導的項目組開始了Gnome開發計劃。Gnome是GNU Network Object Model Environment(GNU,網絡對象模型環境)的縮寫。該項目進展很快,由於Gnome項目的成功,1998年11月Qt庫的開發者Troll公司宣布修改許可證協議,Qt庫也成為自由軟件。 1998年發布了Gnome1.0。現在,Gnome已成為一個強勁的GUI應用程序開發框架,並且可以在任何一種Unix系統下運行。Gnome使用的圖形庫是Gtk+——最初為了編寫GIMP而創建的一套構件庫,它是基於LGPL創建的,可以用它來開發開放源代碼的自由軟件,也可以開發不開放源代碼的商用軟件。Gnome的界面與KDE的界面是類似的(Gnome的目的之一就是創建一套類似KDE的桌面環境),熟悉KDE的用戶無需學習就能夠使用Gnome。由於以上幾個原因,Gnome已經成為大多數Linux發布版本的首選桌面環境。 從用戶的角度看,Gnome是一個集成桌面環境和應用程序的套件。從程序員的角度看,它是一個應用程序開發框架(由數目眾多的實用函數庫組成)。即使用戶不運行Gnome桌面環境,用Gnome編寫的應用程序也可以正常運行,但是這些應用程序是可以很好地和Gnome桌面環境集成。Gnome桌面環境包含文件管理器,它用於任務切換、啟動程序以及放置其他程序的“面板”、“控制中心”(包括配置系統的程序以及一些小東西)等。這些程序在易用的圖形界面背後隱藏了傳統的UNIX Shell。Gnome的開發結構使開發一致的、易用的和可互相操作的應用程序成為可能。 在Linux下開發GUI程序的首要問題是采用什麼樣的圖形庫。Gtk+(GIMP Tool Kit,GIMP工具包)是一個用於創造圖形用戶接口的圖形庫它被稱為GIMP工具包,因為它最初用於開發“通用圖片處理程序”(General Image Manipulation Program,GIMP),Gtk已在大量軟件項目,包括Gnome中得到了廣泛應用。Gtk+是在Gdk(GIMP Drawing Kit,GIMP繪圖包) 的基礎上創建的.因為Gtk +和Gnome是用C語言編寫的,所以在開發Linux下的GUI程序時使用C語言是非常方便的。如果用C++語言開發基於Gtk +應用程序,可以使用一個名為Gtk的函數庫。一般的Linux發布版本中都提供了C編譯器gcc或egcs。使用gcc或egcs可以編譯C和C++源代碼,編譯出的目標代碼質量非常好,編譯速度也很快。各種C編譯器都要使用一些C語言實用函數。為了保證程序的可移植性,gcc沒有使用通用的C函數庫,而是使用一種稱為glib的函數庫。glib也是Gtk+的基礎。它包含一些標准函數的替代函數(如字符串處理函數)和基本數據結構的實現(單向鏈表、雙向鏈表、樹、哈希表等)。glib中所包含的函數消除了某些函數的安全漏洞,使其更加可靠,在不同平台上移植也更加方便。 GTK是用於實現圖形用戶接口的函數庫。在Linux平台上,GUI(圖形用戶接口)使用的是稱為X窗口(XWindow)的系統。X窗口系統是1984年由美國麻省理工學院開發的。在Linux上使用的X窗口系統是一種稱為XFree86 的X版本。X窗口系統與Microsoft Windows的圖形用戶接口有所不同,它是基於客戶/服務器的。X服務器在計算機上運行,控制監視器、鼠標和鍵盤。X客戶通過網絡與服務器通訊。X服務器為X客戶提供圖形顯示服務。也就是說,X客戶和X服務器可能在同一台計算機上運行,也可能在不同的計算機上運行。X窗口系統帶有一套低級的庫函數,稱為Xlib。Xlib提供了許多對X窗口的屏幕進行操作的函數。當然,使用Xlib函數在屏幕上創建構件是很復雜的。GTK要在屏幕上繪制各種構件,就需要與X服務器打交道。但是GTK提供的構件庫並未直接使用Xlib,而是使用了一個稱為GDK的庫。 GDK的意思是GIMP Drawing Toolkit,即GIMP繪圖工具包。差不多每個Gdk函數都是一個相應Xlib函數的封裝。但是Xlib的某些復雜性(和功能)被隱藏起來了。這樣是為了簡化編程,使Gdk更容易移植到其他窗口系統(有一個在Windows平台上的Gdk版本)。