基于GTK+和X-window的GUI在嵌入式Linux中的應用
在嵌入式系統應用日益發(fā)展的今天,越來(lái)越多的應用都需要使用到 GUI 來(lái)進(jìn)行開(kāi)發(fā),以此來(lái)獲得更好的交互性。
嵌入式 Linux 下 GUI 的選擇,對大多數開(kāi)發(fā)人員來(lái)說(shuō)是一個(gè)需要權衡對比的過(guò)程。選擇 GTK+ 運行在 X 系統上,然后 X 系統運行在嵌入系統的 framebuffer 上,這會(huì )是一個(gè)很好的選擇。
GTK+ 與 X 的優(yōu)點(diǎn)
當然,GTK+ 與 X 一般都是被大家考慮為體積較大的桌面系統的好搭配,但實(shí)際上對于嵌入系統來(lái)說(shuō),它也有著(zhù)諸多的優(yōu)點(diǎn):
1、 X-window 系統與 GTK+ 都非常穩定可靠,X-window 系統是經(jīng)歷了長(cháng)期的開(kāi)發(fā)及應用實(shí)踐的,GTK+ 也是一個(gè)比較成熟的開(kāi)放源代碼項目;
2、 X-window 系統是一個(gè)靈活的 client/server 的模型結構,一個(gè)應用客戶(hù)端的崩潰不會(huì )影響到圖形系統的其他部分,這是一個(gè)很重要的特性,它有利于支持第三方應用的擴展開(kāi)發(fā),而不影響到主體部分;
3、 GTK+有兩個(gè)重要的庫:GDK和GLIB。GDK抽象了底層的窗口管理,要移植 GTK+ 到另一個(gè)不同的窗口系統的話(huà),我們只需要移植 GDK 就可以了。GLIB 是一個(gè)工具集合,它包括了數據類(lèi)型,各種宏定義,類(lèi)型轉化,字符串處理,任何應用程序都可以鏈接這個(gè) GLIB 庫,使用其中的各種數據類(lèi)型、方法,來(lái)避免重復代碼,或者說(shuō)避免開(kāi)發(fā)人員重新發(fā)明輪子,這樣有利于減少整個(gè)系統的尺寸;
4、 對 GTK+/X 的裁剪是很容易的,它們有著(zhù)很好的可配置的選項,有著(zhù)清晰的代碼結構,可以保證安全正確地去掉大段的不需要的代碼;
5、 GTK+ 有著(zhù)大量的應用,GTK+ 已經(jīng)被用在了很多重要的應用系統中;
6、 GTK+ 的授權是 LGPL 方式的,X 是 non-copyleft free license 的,第三方開(kāi)發(fā)的系統都能與它們進(jìn)行鏈接;
7、 GTK+/X 二者都是基于 C 代碼的,而不是C++;
8、 GTK+ 使用 C 來(lái)實(shí)現了面向對象的架構;
其他 GUI 系統
其他可以選擇的圖形系統包括:Qt/Embedded,FLTK 和 Microwindows。
1、 Qt/E 是其中較高級的,它是一個(gè)完整的,基于 framebuffer 的 GUI 系統,由 Trolltech 公司開(kāi)發(fā);
2、 Qt/E 有著(zhù)高效的圖形渲染效果,還包括 TrueType 字體系統,及 alpha blending 半透明處理;
3、 但 Qt/E 不是使用 LGPL 授權方式,而是使用兩種授權方式:開(kāi)發(fā)使用 GPL,而商用需要授權與版稅;
4、 Qt/E 是用 C++ 編寫(xiě)的;
5、 Qt/E 非常大,一個(gè) iPAQ QPE 就包括了 3.3MB 的 Qt/E 庫和一個(gè) 718KB 的 QPE 庫(和 Xlib 類(lèi)似的一種庫);
6、 Qt/E 不夠穩定,QPE demo 不錯,但出現過(guò)崩潰;
7、 FLTK (the Fast Light Toolkit) 是一個(gè)小型的 GUI 圖形系統,它也是用 C++ 寫(xiě)的,特性太少,應用范圍較少,不夠成熟;
8、 Microwindows 和 X-Window 相比也是一個(gè)不錯的選擇,它占用大約 100KB-600KB 大小的內存,和文件存儲空間,雖然已經(jīng)有了一個(gè)其上的 GTK+ 移植,但還是不夠成熟;
X-window:比你想象的要小很多
對于X-window系統,廣大的網(wǎng)絡(luò )開(kāi)發(fā)者已經(jīng)做了大量的工作來(lái)減小其的尺寸,最知名的有TinyX??梢酝ㄟ^(guò)對不需要的代碼的裁剪及去除XLIB中靜態(tài)數據來(lái)減少總體的尺寸,如:color管理系統,弧形,粗線(xiàn)條等。
評論