?? 面向?qū)崟r(shí)嵌入式系統(tǒng)的圖形用戶界面支持系統(tǒng)――minigui 編譯、安裝和配置 .htm
字號(hào):
<html><head><!-- ***** comments #1: Meta Information - can be editted *****--><title>面向?qū)崟r(shí)嵌入式系統(tǒng)的圖形用戶界面支持系統(tǒng)――MiniGUI編譯、安裝和配置</title><meta content="text/html; charset=GB2312" http-equiv="Content-Type" /><meta name="ROBOTS" content="index,follow"/><meta content="linux, linux tutorials, linux training, linux standards, linux code, linux resources, linux programming, open source standards, linux how to, IBM, linux 教程, linux 培訓(xùn),Linux 文章, Linux 論文, linux 標(biāo)準(zhǔn), Linux 白皮書(shū) linux 代碼, linux 參考資料, linux 編程, 開(kāi)放源碼標(biāo)準(zhǔn)" name="KEYWORDS" /><meta content="實(shí)時(shí),嵌入,圖形用戶界面,MiniGUI,編譯,安裝,配置" name="KEYWORDS" /><meta content="對(duì)開(kāi)放源碼的自由軟件來(lái)說(shuō),程序員得到的通常是源代碼。在編譯源代碼并正確安裝和配置的過(guò)程中,往往會(huì)涉及到許多工具和函數(shù)庫(kù),因此其過(guò)程經(jīng)常顯得有些繁復(fù),從而也導(dǎo)致許多程序員望而生畏。本文重點(diǎn)介紹了 MiniGUI 的編譯、安裝和配置過(guò)程,解釋了該過(guò)程中要使用的工具,并說(shuō)明了 MiniGUI 的配置選項(xiàng)。本文可幫助程序員快速正確地安裝和配置 MiniGUI。" name="ABSTRACT" /><meta content="papers_html" name="dWCategory" /><meta content="Linux" name="zone" /><meta content="對(duì)開(kāi)放源碼的自由軟件來(lái)說(shuō),程序員得到的通常是源代碼。在編譯源代碼并正確安裝和配置的過(guò)程中,往往會(huì)涉及到許多工具和函數(shù)庫(kù),因此其過(guò)程經(jīng)常顯得有些繁復(fù),從而也導(dǎo)致許多程序員望而生畏。本文重點(diǎn)介紹了 MiniGUI 的編譯、安裝和配置過(guò)程,解釋了該過(guò)程中要使用的工具,并說(shuō)明了 MiniGUI 的配置選項(xiàng)。本文可幫助程序員快速正確地安裝和配置 MiniGUI。" name="DESCRIPTION" /><meta content="public" name="SECURITY" /><meta content="2000xxxx" name="LAST UPDATED" /><!-- ***** end Meta Information *****--><!-- ***** DO NOT EDIT FOLLOWING CODE *****--><script language="JavaScript"><!-- function nav_pulldown(list) {top.document.location.href = list.options[list.selectedIndex].value;} function wB(){var br="BR";if((navigator.userAgent.indexOf('Mozilla')!= -1)&&((navigator.userAgent.indexOf('Spoofer')==-1)&&(navigator.userAgent.indexOf('compatible')==-1))){br="NS"}return br} function wV(br){var bv=0;bv=navigator.appVersion.substring(0,1);if(br=="IE"){(parseInt(bv));}if(br=="NS"){(parseInt(bv));}return bv;} function wP(){var os="OS";if(navigator.userAgent.indexOf("OS/2")!=-1){os='os/2'}return os;}b=wB();v=wV(b);o=wP(); function change_bgColor() {if (b=="NS" && v==2 && o != "os/2"){document.bgColor="#999999"}} function gotosite() {var L = document.formSpinbox.pickWW.selectedIndex; location.href = document.formSpinbox.pickWW.options[L].value; return false;}//--> </script></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr colspan="3"><td width="8"><!-- gutter--><img height="1" src="/developerWorks/cn/i/c.gif" width="8" alt=""/></td><td><font face="helvetica, helv, arial" size="-1"> </font></td></tr><!-- ***** comments #3: bread crumb trail *****--><!-- ***** comments #4: enter the pdf link and size *****--><tr><td valign="top" width="8"><!-- gutter--><img height="1" src="/developerWorks/cn/i/c.gif" width="8" alt=""/></td><td valign="top"><!-- ***** comments #5: enter the Title, subtitle, author name, job title, and month/year article was initially published *****--><br /><p><strong class="title">面向?qū)崟r(shí)嵌入式系統(tǒng)的圖形用戶界面支持系統(tǒng)――MiniGUI</strong><br /><strong class="subtitle">編譯、安裝和配置</strong></p><p>魏永明<br /> 藍(lán)點(diǎn)軟件(北京)研發(fā)中心技術(shù)主管<br /> 2000/10/27</p><!-- END title and author lines--><!-- Editor #5: Begin Table of Contents--><p><table align="right" border="0" cellpadding="0" cellspacing="0" width="137"><tr><td align="center" bgcolor="#cc6633"><font color="#ffffff" face="helvetica,helv,arial" size="-1"><b>內(nèi)容:</b> </font></td></tr><tr><td bgcolor="#000000" width="100%"><font face="helvetica,helv,arial" size="-3"><img alt="" border="0" height="1" src="/developerWorks/cn/i/c.gif" width="1" /> </font></td></tr><tr><td bgcolor="#ffffff" width="100%"><font face="helvetica,helv,arial" size="-3"><img alt="" border="0" height="4" src="/developerWorks/cn/i/c.gif" width="1" /> </font></td></tr><tr><td><font face="helvetica,helv,arial" size="-2"><a herf="#1">Linux </a> </font><a href="#1"><font size="-2"> 下的軟件維護(hù)和建立工具 </font></a></td></tr><tr><td><font face="helvetica,helv,arial" size="-2"><a herf="#2">MiniGUI </a> </font><a href="#2"><font size="-2"> 的依賴庫(kù) </font></a></td></tr><tr><td><font face="helvetica,helv,arial" size="-2"><a herf="#3"></a> </font><a href="#3"><font size="-2">安裝 </font><font face="helvetica,helv,arial" size="-2"> MiniGUI </font><font size="-2"> 的依賴庫(kù) </font></a></td></tr><tr><td><font face="helvetica,helv,arial" size="-2"><a herf="#4"></a> </font><font size="-2">編譯并安裝 </font><font face="helvetica,helv,arial" size="-2"> MiniGUI </font></td></tr><tr><td><font face="helvetica,helv,arial" size="-2"><a herf="#resources">MiniGUI </a> </font><a href="#resources"><font size="-2"> 的配置 </font></a></td></tr><tr><td><font face="helvetica,helv,arial" size="-2"><a herf="#author"></a> </font><a href="#author"><font size="-2">作者 </font></a></td></tr><tr><td bgcolor="#000000"><font size="-3"><img height="3" src="/developerWorks/cn/i/c.gif" width="137" alt=""/> </font></td></tr></table><!-- End Table of Contents--><!-- comments #6: html content of the paper--></p><p><em>對(duì)開(kāi)放源碼的自由軟件來(lái)說(shuō),程序員得到的通常是源代碼。在編譯源代碼并正確安裝和配置的過(guò)程中,往往會(huì)涉及到許多工具和函數(shù)庫(kù),因此其過(guò)程經(jīng)常顯得有些繁復(fù),從而也導(dǎo)致許多程序員望而生畏。本文重點(diǎn)介紹了 MiniGUI 的編譯、安裝和配置過(guò)程,解釋了該過(guò)程中要使用的工具,并說(shuō)明了 MiniGUI 的配置選項(xiàng)。本文可幫助程序員快速正確地安裝和配置 MiniGUI。</em></p><a name="1"><p><strong class="subhead">1 Linux 下的軟件維護(hù)和建立工具</strong><br />對(duì)開(kāi)放源碼的自由軟件來(lái)說(shuō),程序員得到的通常是源代碼。在編譯源代碼并正確安裝和配置的過(guò)程中,往往會(huì)涉及到許多工具和函數(shù)庫(kù),因此其過(guò)程經(jīng)常顯得有些繁復(fù)。MiniGUI也不例外。為了說(shuō)明 MiniGUI 的正確編譯和安裝過(guò)程,我們有必要首先了解 Linux 系統(tǒng)下用于軟件維護(hù)和建立的工具。</p><br />1.1 make 和 makefile <br /><br />make 是 Linux 下最常用的二進(jìn)制程序、函數(shù)庫(kù)的建立生成工具。make 運(yùn)行時(shí)要根據(jù)當(dāng)前目錄下的 makefile 文件(一般是 Makefile),確定要生成什么樣的二進(jìn)制文件,以及對(duì)應(yīng)的命令。我們還可以在 makefile 文件中建立要生成的目標(biāo)與源代碼之間的依賴關(guān)系,從而可以讓 make 工具根據(jù)時(shí)間自動(dòng)判斷是否需要通過(guò)中間過(guò)程而生成最終目標(biāo)。盡管通過(guò) makefile 文件可以組織一個(gè)大的項(xiàng)目,但往往手工編寫(xiě)一個(gè) makefile 文件并不是一件輕松的事情,并且在需要維護(hù)一個(gè)源代碼的目錄樹(shù)時(shí),makefile 文件的維護(hù)工作就會(huì)大大增加。為此,GNU 又開(kāi)發(fā)了 Autoconfi/Automake 工具,可以用來(lái)自動(dòng)生成 makefile 文件,并且能夠檢查系統(tǒng)的配置信息,從而幫助提供源代碼的可移植性。 <br />1.2 Autoconf/Automake <br />GNU 的 Autoconf 及 Automake 這兩個(gè)軟件實(shí)際是由若干 Shell 腳本組成的,它可以幫助程序員輕松產(chǎn)生 makefile 文件?,F(xiàn)在的各種自由軟件,如Apache、MySQL 等都是利用Autoconf,Automake 實(shí)現(xiàn)自動(dòng)配置和編譯的。MiniGUI 也采用了 Autoconf/Automake 接口。用戶只要使用"./configure"、"make"、"make install" 就可以把程序編譯并安裝到系統(tǒng)中。 <br />為了更好地了解 Autoconf 和 Automake,我們需要對(duì) makefile 作一簡(jiǎn)單回顧。Makefile 基本上就是"目標(biāo)"(target)、"依賴性"(dependencies)和"動(dòng)作"三者所組成的一系列規(guī)則。而 make 就是根據(jù) makefile 文件的規(guī)則決定如何編譯(compile)和連接 (link)程序或者其它動(dòng)作。當(dāng)然,make 可做的不只是編譯和連接程序,例如 FreeBSD 的 port collection 中,Makefile還可以做到自動(dòng)下載遠(yuǎn)程程序,解壓縮(extract),打補(bǔ)丁 (patch),然后編譯并安裝到系統(tǒng)中。 <br />Makefile 基本結(jié)構(gòu)雖然很簡(jiǎn)單,但是妥善運(yùn)用這些規(guī)則就可以變換出許多不同的花樣。卻也因?yàn)檫@樣,許多人剛開(kāi)始學(xué)寫(xiě)makefile 時(shí)會(huì)覺(jué)得沒(méi)有規(guī)范可以遵循,每個(gè)人寫(xiě)出來(lái)的makefile都不大一樣,不知道從哪里下手,而且常常會(huì)受到開(kāi)發(fā)環(huán)境的限制,只要環(huán)境參數(shù)不同或者路徑更改,可能 makefile 就得跟著修改。雖然有GNU Makefile Conventions (GNU Makefile慣例)制訂出一些在進(jìn)行 GNU 程序設(shè)計(jì)時(shí)編寫(xiě) makefile 的一些標(biāo)準(zhǔn)和規(guī)范,但是其內(nèi)容很長(zhǎng)而且很復(fù)雜,并且經(jīng)常作一些調(diào)整,為了減輕程序開(kāi)發(fā)人員維護(hù)makefile 的負(fù)擔(dān),就出現(xiàn)了Automake。 <br />利用Automake,編程者只需要寫(xiě)一些預(yù)先定義好的宏(macro),提交給Automake處理,就會(huì)產(chǎn)生一個(gè)可以供 Autoconf 使用的 Makefile.in文件。再配合使用 Autoconf產(chǎn)生的自動(dòng)配置文件 configure 即可產(chǎn)生一份符合 GNU Makefile 慣例的 Makeifle 了。 <br /> 在開(kāi)始使用 Automake 之前,首先確認(rèn)你的系統(tǒng)安裝有如下軟件: <ul><li> GNU Automake </li><li> GNU Autoconf </li><li> GNU m4 </li><li> perl </li><li> GNU Libtool (如果你需要產(chǎn)生共享庫(kù)) </li></ul><br />最好也使用 GNU C/C++ 編譯器、GNU Make 以及其它 GNU 的工具程序來(lái)作為開(kāi)發(fā)的環(huán)境,這些工具都是屬于 GPL 的自由軟件,不但免費(fèi)而且功能強(qiáng)大。如果你是使用 Red Hat Linux,可以找到所有上述軟件的 rpm 文件。 <br /> 利用 configure 所產(chǎn)生的 Makefile文件有幾個(gè)預(yù)先設(shè)定的目標(biāo)可供使用,這里只對(duì)其中幾個(gè)簡(jiǎn)述如下。 <ul><li> make all 產(chǎn)生設(shè)定的目標(biāo)。只敲入make 也可以,此時(shí)會(huì)開(kāi)始編譯源代碼,然后連接并產(chǎn)生執(zhí)行文件。 </li><li> make clean 清除之前所編譯的可執(zhí)行文件及目標(biāo)文件(*.o)。 </li><li>make distclean 除了清除可執(zhí)行文件和目標(biāo)文件以外,也把 configure 所產(chǎn)生的 Makefile 清除掉。 通常在發(fā)布軟件前執(zhí)行該命令。 </li><li> make install 將程序安裝到系統(tǒng)中,若源碼編譯成功,且執(zhí)行結(jié)果正確,便可以把程序安裝到系統(tǒng)預(yù)先設(shè)定的執(zhí)行文件存放路徑中,若用 bin_PROGRAMS 宏的話,程序會(huì)被安裝到 /usr/local/bin下。 </li><li> make dist 將程序和相關(guān)的文檔包裝為一個(gè)壓縮文檔以供發(fā)布。執(zhí)行完在目錄下會(huì)產(chǎn)生一個(gè)以PACKAGE-VERSION.tar.gz 為名稱的文件。PACKAGE 和 VERSION 這兩個(gè)參數(shù)是根據(jù) configure.in 文中 AM_INIT_AUTOMAKE(PACKAGE, VERSION) 的定義。 </li><li> make distcheck 和 make dist 類似,但是加入檢查包裝以后的壓縮文件是否正常,這個(gè)目標(biāo)除了把程序和相關(guān)文檔包裝成 tar.gz 文件外,還會(huì)自動(dòng)把這個(gè)壓縮文件解開(kāi),執(zhí)行 configure,并執(zhí)行 make all ,確認(rèn)編譯無(wú)錯(cuò)誤以后,方顯示這個(gè) tar.gz 文件已經(jīng)準(zhǔn)備好并可以發(fā)布了。 </li></ul><br /> 要注意的是,利用 Autoconf 及 Automake 所產(chǎn)生出來(lái)的軟件套件是可以在沒(méi)有安裝 Autoconf 及 Automake 的環(huán)境使用的,因?yàn)?configure 是一個(gè) shell script,它己被設(shè)計(jì)為可以在一般 Unix 的 sh 這個(gè) shell 下執(zhí)行。但是如果要修改 configure.in 及 Makefile.am 文件再產(chǎn)生新的 configure 及 Makefile.in 文件時(shí)就一定要有 Autoconf 及 Automake 了。 <br /> 1.3 ldd 和 ldconfig <br />ldd 是用來(lái)檢查可執(zhí)行文件所需要的共享庫(kù)。例如: <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>$ ldd /bin/ls libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001c000) libc.so.6 => /lib/libc.so.6 (0x40020000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)</pre></td></tr></table><br />我們?cè)?/bin/ls 程序上運(yùn)行 ldd 命令,就可以檢查該程序所使用的共享庫(kù)。注意在 ldd 命令打印的結(jié)果中,“=>”左邊的表示該程序需要連接的共享庫(kù)之 so 名稱,右邊表示由 Linux 的共享庫(kù)系統(tǒng)找到的對(duì)應(yīng)的共享庫(kù)在文件系統(tǒng)中的具體位置。默認(rèn)情況下,/etc/ld.so.conf 文件中包含有默認(rèn)的共享庫(kù)搜索路徑,例如: <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>/usr/X11R6/lib/usr/lib/usr/i486-linux-libc5/lib/usr/lib/qt-2.0.1/lib/usr/lib/qt-1.44/lib/usr/lib/qt-2.1.0/lib/usr/kerberos/lib/usr/lib/qt-1.45/lib</pre></td></tr></table><br />如果 ldd 沒(méi)有找到對(duì)應(yīng)的共享庫(kù)文件的具體位置,可能是兩種情況引起的: <ol><li>共享庫(kù)沒(méi)有安裝在該系統(tǒng)中; </li><li>共享庫(kù)保存在 /etc/ld.so.conf 文件列出的搜索路徑之外的位置。 </li></ol><br />通常情況下,許多開(kāi)放源代碼的程序或函數(shù)庫(kù)都會(huì)默認(rèn)將自己安裝到 /usr/local 目錄下的相應(yīng)位置(/usr/local/bin 或 /usr/local/lib),以便與系統(tǒng)自身的程序或函數(shù)庫(kù)相區(qū)別。而許多 Linux 系統(tǒng)的 /etc/ld.so.conf 文件中默認(rèn)又不包含 /usr/local/lib。因此,往往會(huì)出現(xiàn)已經(jīng)安裝了共享庫(kù),但是卻無(wú)法找到共享庫(kù)的情況。這時(shí),就應(yīng)該檢查 /etc/ld.so.conf 文件,如果其中缺少 /usr/local/lib 目錄,就應(yīng)該添加進(jìn)去。 <br />在修改了 /etc/ld.so.conf 文件或者在系統(tǒng)中安裝了新的函數(shù)庫(kù)之后,還要運(yùn)行一個(gè)命令,即 ldconfig。該命令用來(lái)刷新系統(tǒng)的共享庫(kù)緩存,即 /etc/ld.so.cache 文件。為了減少共享庫(kù)系統(tǒng)的庫(kù)搜索時(shí)間,共享庫(kù)系統(tǒng)維護(hù)了一個(gè)共享庫(kù) so 名稱的緩存文件。因此,在安裝新的共享庫(kù)之后,一定要運(yùn)行 ldconfig 刷新該緩存。 <a name="2"><p><strong class="subhead">2 MiniGUI 的依賴庫(kù)</strong><br />為了正確安裝 MiniGUI,需要了解 MiniGUI 的正常運(yùn)行需要哪些函數(shù)庫(kù),也即 MiniGUI 的依賴庫(kù)。在編譯 MiniGUI 之前,首先要確保正確安裝了所需的依賴庫(kù)。 </p><br />2.1 LibGGI 或者 SVGALib <br />這兩個(gè)函數(shù)庫(kù)可以為 MiniGUI 提供底層圖形支持,我們稱之為“圖形引擎”。其中 SVGALib 是一個(gè)比較老的函數(shù)庫(kù),只提供對(duì) Linux 控制臺(tái)的支持;LibGGI 是一個(gè)比較新的圖形函數(shù)庫(kù),提供了對(duì) Linux 控制臺(tái)、X Window 等的支持,并且接口相對(duì)簡(jiǎn)單。要正確使用 MiniGUI,需要安裝 LibGGI 或者 SVGALib 的修訂版。筆者建議安裝 LibGGI,因?yàn)樗峁┝藢?duì) Linux 控制臺(tái)和 X 的支持。在 Linux 下,建立在 LibGGI 之上的程序既可以運(yùn)行在 Linux 控制臺(tái)上,也可以運(yùn)行在 X Window 上,從而可以提高程序的可移植性。并且對(duì) MiniGUI 來(lái)說(shuō),如果能夠運(yùn)行在 X Window 上,就可以大大方便程序的調(diào)試。LibGGI 的另外一個(gè)好處就是在 Linux 控制臺(tái)上,它可以運(yùn)行在 Linux 2.2 內(nèi)核所提供的 FrameBuffer 驅(qū)動(dòng)程序之上,而不需要對(duì)顯示芯片進(jìn)行直接的硬件編程,因而也不需要超級(jí)用戶權(quán)限去運(yùn)行程序。這點(diǎn)和 SVGALib 不同,SVGALib 不支持 FrameBuffer,同時(shí)需要超級(jí)用戶權(quán)限。 <br />如果讀者使用的是 Linux 內(nèi)核 2.0.xx,就必須使用 SVGALib。這個(gè)函數(shù)庫(kù)實(shí)際是兩個(gè)庫(kù)組成的,即 vga 和 vgagl。MiniGUI 使用的是 vgagl,該函數(shù)庫(kù)在 vga 之上運(yùn)行,提供了較好的圖形函數(shù)。但是,我們不能使用標(biāo)準(zhǔn)的 SVGALib 函數(shù)庫(kù),因?yàn)樵摵瘮?shù)庫(kù)和 Linux 上的 Pthread 函數(shù)庫(kù)相沖突――它們均使用了 SIGUSR1 和 SIGUSR2 這兩個(gè)由操作系統(tǒng)保留給應(yīng)用程序的信號(hào),從而會(huì)導(dǎo)致不可預(yù)料的結(jié)果。為此,我們對(duì) SVGALib 進(jìn)行了修改。讀者應(yīng)該使用經(jīng)過(guò)我們修改的 SVGALib 函數(shù)庫(kù),該函數(shù)庫(kù)同時(shí)提供了用于處理 GB2312 字體顯示的函數(shù)。還要注意的是,標(biāo)準(zhǔn) SVGALib 的 vgagl 庫(kù)不提供對(duì)標(biāo)準(zhǔn) VGA 16 色模式的支持,因此,如果要在 VGA 16 色模式下運(yùn)行 MiniGUI,需要下載 vgagl4 函數(shù)庫(kù)。 <br />以上提到的函數(shù)庫(kù)可以從如下 URL 處下載: <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>ftp://ftp.minigui.org/pub/dep-libs/libggi-2.1beta2.0-20000316.tgzftp://ftp.minigui.org/pub/dep-libs/ svgalib-1.4.0-hz.tar.gzftp://ftp.minigui.org/pub/dep-libs/ vgagl4-0.1.0.tar.gz</pre></td></tr></table><br />也可以訪問(wèn)上述兩個(gè)自由軟件項(xiàng)目的站點(diǎn): <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>http://www.ggi-project.orghttp://www.svgalib.org</pre></td></tr></table> 2.2 LibTTF 和 LibT1 <br />這兩個(gè)函數(shù)庫(kù)分別提供對(duì) TrueType 字體和 Adobe Type1 字體的支持。對(duì) MiniGUI 來(lái)說(shuō),這兩個(gè)函數(shù)庫(kù)是可選的。如果需要 TrueType 和 Adobe Type1 字體的支持,則需要首先安裝這兩個(gè)函數(shù)庫(kù),否則就不必安裝。MiniGUI 的 configure 腳本可以自動(dòng)檢查系統(tǒng)中是否安裝有這兩個(gè)函數(shù)庫(kù),如果沒(méi)有安裝,則會(huì)取消對(duì) TrueType 和 Adobe Type1 字體的支持。 <br />現(xiàn)在的 Linux 發(fā)行版默認(rèn)會(huì)安裝 LibTTF(即 FreeType 庫(kù))。但是,需要注意的是 MiniGUI 所使用的 LibTTF 是 1.3.xx 版本的。如果已安裝的 LibTTF 版本不同,則可能因?yàn)榧嫒菪詥?wèn)題而無(wú)法正確編譯 MiniGUI。因此,需要事先確認(rèn) LibTTF 的版本號(hào),可通過(guò) <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>$ ls -l /usr/lib/libttf*</pre></td></tr></table><br />命令來(lái)檢查已安裝的 LibTTF 庫(kù)的版本號(hào),其中的共享庫(kù)文件名中包含了該函數(shù)庫(kù)的版本號(hào)。 <br />以上提到的函數(shù)庫(kù)可以從如下 URL 處下載: <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>ftp://ftp.minigui.org/pub/minigui/freetype-1.3.1.tar.gzftp://ftp.minigui.org/pub/minigui/t1lib-1.0.1.tar.gz</pre></td></tr></table> 2.3 其他函數(shù)庫(kù) <br />其他 MiniGUI 所依賴的函數(shù)庫(kù)包括 libjpeg,提供 POSIX 兼容線程支持的 LinuxThreads,用來(lái)分析命令參數(shù)的 popt 庫(kù)等等。一般的 Linux 發(fā)行版中均已包含有這些函數(shù)庫(kù)。 </a> <a name="3"><p><strong class="subhead">3 安裝 MiniGUI 的依賴庫(kù) </strong><br />除 SVGALib 之外,上面提到的 MiniGUI 的依賴庫(kù)提供有 automake/autoconf 接口,從而可以非常方便地編譯并安裝這些依賴庫(kù)。其中 LibGGI 稍微有些例外,該函數(shù)庫(kù)已經(jīng)提供了一個(gè)批處理腳本,可以幫助你編譯并安裝 LibGGI 的所有函數(shù)庫(kù),其中包括用來(lái)處理輸入(鍵盤(pán)、鼠標(biāo)等)的 libgii,用來(lái)處理圖形輸出的 libggi 等。對(duì) MiniGUI 來(lái)說(shuō),只需安裝 libgii 和 libggi。在下載 libggi-2.1beta2.0-20000316.tgz 文件之后,運(yùn)行 </p><table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>$ tar zxf libggi-2.1beta2.0-20000316.tgz</pre></td></tr></table><br />可解開(kāi)該 tgz 包,并在當(dāng)前目錄中建立 degas 子目錄。進(jìn)入 degas/lib/ 目錄,運(yùn)行 ./buildall 腳本,就可以編譯并安裝 libgii、libggi 等函數(shù)庫(kù)。注意應(yīng)該以 root 身份運(yùn)行 buildall 腳本。如果要單獨(dú)編譯某個(gè)函數(shù)庫(kù),可以進(jìn)入相應(yīng)的目錄,然后按照正常的編譯過(guò)程進(jìn)行編譯。比如,要重新編譯 libggi,可運(yùn)行如下命令: <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>$ cd libggi$ ./autogen.sh$ ./configure$ make$ su -c make install</pre></td></tr></table><br />注意在編譯 libggi 之前,首先要編譯并安裝 libgii 庫(kù)。 <br />對(duì) SVGALib 來(lái)說(shuō),只要解開(kāi)軟件包并運(yùn)行 make 就可以編譯并安裝函數(shù)庫(kù)。 <br />注意在安裝完成每個(gè)函數(shù)庫(kù)之后,要運(yùn)行 ldconfig 命令更新共享庫(kù)的搜索緩存,并確保將 /usr/local/lib 目錄添加到 /etc/ld.so.conf 文件。 </a> <a name="4"><p><strong class="subhead">4 編譯并安裝 MiniGUI </strong><br />在安裝好 MiniGUI 的上述依賴庫(kù)之后,就可以編譯并安裝 MiniGUI 了。首先下載 MiniGUI 的三個(gè) tgz 壓縮包: </p><table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>ftp://ftp.minigui.org/pub/minigui/0.9.92/libminigui-0.9.92.tar.gzftp://ftp.minigui.org/pub/minigui/0.9.92/miniguiapps-0.9.92.tar.gzftp://ftp.minigui.org/pub/minigui/0.9.92/miniguiexec-0.9.92.tar.gzftp://ftp.minigui.org/pub/minigui/0.9.92/miniguires-0.9.92.tar.gz</pre></td></tr></table><br />其中的libminigui-x.x.xx.tar.gz 是 MiniGUI 函數(shù)庫(kù)本身。其中包含有三個(gè)函數(shù)庫(kù),即 libminigui、libmywins、和 libvcongui。miniguiapps-x.x.xx.tar.gz 是基于 MiniGUI 的應(yīng)用程序軟件包,目前包含兩個(gè)游戲,即 bomb(掃雷)和 russia(俄羅斯方塊),以及一個(gè)基于 MiniGUI 的 Linux 控制臺(tái)仿真程序,即 vcongui,注意這些程序在安裝到系統(tǒng)之后才能正常運(yùn)行。miniguiexec-0.9.92.tar.gz 是基于 MiniGUI 的一些演示程序,不需要安裝到系統(tǒng)中。miniguires-0.9.92.tar.gz 是 MiniGUI 程序要使用的一些資源,在運(yùn)行任何基于 MiniGUI 的程序之前,要首先安裝資源,其中包括位圖、圖標(biāo)、鼠標(biāo)等等。 4.1 編譯并安裝 libminigui <br />用如下命令解開(kāi)libminigui-x.x.xx.tar.gz 軟件包(以下的實(shí)例均以 0.9.92 版,即 MiniGUI 最新版為例): <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>$ tar zxf libminigui-0.9.92.tar.gz</pre></td></tr></table><br />該命令將在當(dāng)前目錄建立 libminigui-0.9.92 目錄。進(jìn)入該目錄,然后運(yùn)行如下命令: <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>$ cd libminigui-0.9.92$ ./autogen.sh</pre></td></tr></table><br />autogen.sh 是一個(gè)簡(jiǎn)單的腳本程序,該腳本將執(zhí)行 automake 和 autoconf,并在當(dāng)前目錄生成 configure 腳本。 <br />運(yùn)行 ./configure --help腳本將給出如下一個(gè)可用的命令行參數(shù)清單,注意該命令的最后幾行清單說(shuō)明: <table border="0" cellpadding="0" class="code-sample" width="100%"><tr><td><pre>$ ./configure -help
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -