qt/embedded交叉編譯時(shí)一些配置選項(xiàng)的介紹
2011-04-17 18:38
原文網(wǎng)址: http://www./zouzheng/archive/2010/07/06/67199.html當(dāng)進(jìn)入解壓好的源碼包后,,使用./configure –help命令,,可以獲得相應(yīng)幫助,,那我們只要選取參數(shù)部分看看 1. -release 這個(gè)參數(shù)顯而易見,就是編譯Qt以發(fā)布版的模式進(jìn)行,,一般來說,,最后系統(tǒng)完成后,庫就應(yīng)該是發(fā)布版,。 -release 與上面對應(yīng),,自然是調(diào)試版了,如果開發(fā)的話,,可以選擇它吧,。 -debug-and-release 囧,上面那兩個(gè)的兒子,。 -developer-build 囧,,我錯(cuò)了,開發(fā)者也可以用這個(gè)的,,選了這個(gè)后,,可以進(jìn)行自動測試,不過還沒去用過,,以后可以研究研究,。 -opensource -commercial 這兩個(gè)參數(shù)是指是編譯是商業(yè)版本的,還是開源版本呢,,視個(gè)人情況而定,。 2. -shared -static 這兩個(gè)參數(shù)是指Qt的lib以動態(tài)還是靜態(tài)編譯生成,這自然也是視個(gè)人需要的,。 3. -no-fast -fast 這兩個(gè)就很有關(guān)系,,如果對自己的電腦性能很有信心,那就選第一個(gè),,那所有的工程文件都會生成到makefiles中,那編譯的時(shí)間,,估計(jì)可以看完變形金剛了,。如果選第二個(gè),那就加入子目錄和庫到makefiles,,這樣就能加快編譯的速度,。 4. -no-largefile -largefile 顧名思義,支不支持大文件,,一般來說,,嵌入式里是不會有從超過4G的大文件的,那就選第一個(gè)吧,。 5. -no-exceptions -exceptions 計(jì)算機(jī)英語夠好的人都該懂,,這個(gè)自然就是異常情況,,選則編譯器支持拋出異常,否則不支持,。 6. -no-accessibility -accessibility 可訪問性的支持,,說實(shí)話,這個(gè)我真不知道有什么有用了,。等哪天發(fā)現(xiàn)了,,再來好好解釋。 7. -no-stl -stl 是都加入stl的支持,,stl,,這應(yīng)該算是C++程序員應(yīng)該都了解了,再不濟(jì),,那也總聽說過大名吧,。 8. no-sql-<driver> 這 個(gè)可要好好說明下,一般來說,,對于一個(gè)優(yōu)秀的項(xiàng)目開發(fā),,數(shù)據(jù)庫是必不可少的,qt也自帶了大多數(shù)數(shù)據(jù)庫驅(qū)動,,可以完美地支持?jǐn)?shù)據(jù)庫的使用,。對于數(shù) 據(jù)庫的使用,我們可以直接qt驅(qū)動編譯進(jìn)去,,或者以插件的形式編譯進(jìn)去,。一般來說,最簡單地就是直接編譯進(jìn)去,,但使用插件形式的可以更加靈活,,針對不同的 需求將驅(qū)動插件添加。其中,,<>代表的是驅(qū)動名,,如果我想直接添加sqlite的支持話,形式如下:-qt-sql-sqlite,。其他名稱 可以自己查看參數(shù)里,,有詳細(xì)地介紹。 9. -system-sqlite sqlite真受歡迎啊,,當(dāng)然那么優(yōu)秀的嵌入式數(shù)據(jù)庫,,本人也是基本使用它來進(jìn)行開發(fā)。這個(gè)參數(shù)意思是使用操作系統(tǒng)上的sqlite數(shù)據(jù)庫,,如果是不太會移植的,,可以考慮直接使用qt自帶的驅(qū)動。 10. -no-qt3support -qt3support 這個(gè)也是簡潔易懂,,加不加對qt3的支持,。 11. no-xmlpatterns -xmlpatterns 選擇對xml的支持,,如果對網(wǎng)絡(luò)無需求的話,就不用加了,。 12. -no-phonon -phonon phonon是qt中處理多媒體的模塊,,比如放放視頻什么來著,不過本人從沒用過,,也是根據(jù)需要選擇的,。 13. -no-phonon-backend 14. -no-svg -svg 是否加入svg的支持,,svg即可縮放矢量圖形。 15. -no-webkit -webkit 是否加入webkit的支持,,這可是個(gè)好東西,,不過如果跟網(wǎng)絡(luò)不搭界的話,還是不支持吧,。 16. -no-scripttools -scripttools 是否加入腳本工具的支持,,這對php等腳本工程師來說是個(gè)很棒的參數(shù),但對于我這樣菜鳥,,就別提了,。 17. -platform target 目標(biāo)平臺,這可是關(guān)鍵了,,如果不注意的話,,編譯出來是x86上的話,哪怕是再牛的嵌入式工程師來也沒法幫你移植到開發(fā)板上,。通常,,本人是linux-arm-g++。 -no-mmx -no-3dnow -no-sse -no-sse2 這四個(gè)參數(shù)是針對CPU的指令集,,老實(shí)說,,我也不甚了解,不過,,對于開發(fā)并不是影響很大,。 19. -qtnamespace 把qt的庫封裝到命名空間,沒啥重要用處,,依個(gè)人愛好加吧。 20. -qtlibinfix 將所有的qt的.so庫重命名,,也沒啥大用處,。 21. -no-sql-<driver> -qt-sql-<driver> 這是相當(dāng)明顯的,如果這都看不出來,,,,囧,,那您一定比我近視(本人800度近視。,。) 就 是說如果是-no-XX-,,就說明編譯時(shí)不選擇這個(gè)參數(shù),如過是-qt-XX-,,說明我們可以編譯直接選用qt自帶的驅(qū)動,,如果是 -plugin-XX-,就是將驅(qū)動以插件形式編譯,,而-system-XXX,當(dāng)然是使用操作系統(tǒng)提供的驅(qū)動,,不過那就需要您自己移植了,而且有時(shí)還要 用第三方的API,,就方便來說非常麻煩,,但是不排除您是牛人要好好玩玩的情況。 22. 接下來,,我們接著研究配置參數(shù),。 -qt-zlib -system-zlib 想 必經(jīng)過上面的講解,參數(shù)的意思已經(jīng)很快得知,,就是選擇qt帶的zlib庫還是系統(tǒng)的zlib,。zlib庫是用于文件和資料壓縮的庫,對于新入嵌入式的人來 說,,可能并無太大的用處,,但是在以后的實(shí)際開發(fā)中,特別是對于多媒體圖像圖形的工程師來說,,就肯定用到,,因?yàn)閳D形圖像的壓縮都要使用或涉及到這個(gè)庫。 23. -no-gif 這是選擇gif的支持,,如果選擇qt支持的話,,那在用qt開發(fā)的項(xiàng)目中,就能顯示gif圖,,gif也是比較普遍的圖片格式了,,英文全稱是Graphics Interchange Format。 24. -no-libtiff tiff是一種非常復(fù)雜的光柵圖像格式,,并且有直接現(xiàn)成的C語言實(shí)現(xiàn)庫,,因此選擇參數(shù)時(shí)就有了qt和system,一般來說,,科學(xué)相關(guān)的開發(fā)里可能會用到,。 25. -no-libpng png的相關(guān)參數(shù),一種非失真性壓縮位圖圖形文件格式,其實(shí)就是為了替代gif搞出來的,,也是隨實(shí)際需要來選擇,,當(dāng)然,也有C語言實(shí)現(xiàn)的庫,。 26. -no-libmng 27. -no-libjpeg jpeg,這么有名的圖片格式也不用說了,,隨需要選擇吧。 28. -no-openssl SSL,,Security Socket Layer,是一個(gè)安全傳輸協(xié)議,,在Internet網(wǎng)上進(jìn)行數(shù)據(jù)保護(hù)和身份確認(rèn),而OpenSSL是一個(gè)開放源代碼的實(shí)現(xiàn)了SSL及相關(guān)加密技術(shù)的軟件 包,,在qt中,,我們可以選擇直接支持,或者OpenSSL鏈接支持,這個(gè)參數(shù)也是為有需要者提供的,。 以上是第三方庫的參數(shù)選擇,,緊接著就是qt附加參數(shù),在附加參數(shù)里,,我們可以指定編譯的部分及加入?yún)?shù)來獲取信息,。 29. -make 一 句話,說明,,就說我可以這兩個(gè)參數(shù)選擇哪些我要編譯,,哪些我不需要,在 libs tools examples demos docs translations這些里你可以選擇,,比如examples,,并不重要,可以放在-nomake后,,這樣編譯過程中就不會編譯這部分了,。通過適當(dāng)?shù)? 選擇,我們可以大大加快編譯的速度,,這對配置較差的機(jī)子來說有著積極意義,。 30. -R <string> 這兩個(gè)參數(shù)是為編譯時(shí)增加一個(gè)庫的運(yùn)行路徑及頭文件的路徑,,比如使用tslib作為開發(fā)觸摸驅(qū)動時(shí),我們就應(yīng)使用這兩個(gè)參數(shù)來指定tslib的庫路徑和頭文件路徑,。 31. -no-rpath -rpath 這個(gè)參數(shù)比較難于理解,簡單地說,,就是告訴動態(tài)加載器,,到-rpath指定的目錄中尋找編譯時(shí)須要的動態(tài)鏈接庫,語法就與上面的參數(shù)結(jié)合,,比如 -rpath -R/home/xxxx,。 32. -continue 這個(gè)參數(shù)的作用就是當(dāng)出現(xiàn)錯(cuò)誤時(shí)依然進(jìn)行配置編譯,換我是不會加上的,。 33. -verbose, -v 這個(gè)參數(shù)就很眼熟,,在前面的文章中有過詳細(xì)介紹,簡言之,,就是顯示配置的每一步的具體信息,。 34. -no-optimized-qmake 是否編譯生成優(yōu)化過的qmake,沒啥大用,,也屬于可有可無的參數(shù),。 35. -no-nis 是否編譯NIS支持,NIS(網(wǎng)絡(luò)信息服務(wù))是一個(gè)提供目錄服務(wù)的RPC(遠(yuǎn)程過程調(diào)用)應(yīng)用服務(wù),,當(dāng)然沒網(wǎng)絡(luò)需要的可以再次華麗地?zé)o視,。 36. -no-cups 是 否編譯CUPS支持,是不是想問什么用啊?~~~~囧,,開打印店用的,。好了,不說冷笑話,,CUPS給Unix/Linux用戶提供了一種可靠有效 的方法來管理打印,。它支持IPP,并提供了LPD,,SMB(服務(wù)消息塊,,如配置為微軟WINDOWS的打印機(jī))、JetDirect等接口,。CUPS還可 以瀏覽網(wǎng)絡(luò)打印機(jī),。它的開發(fā)提供者是大名鼎鼎的“水果生產(chǎn)商”----蘋果公司。 37. -no-iconv 選擇是否編譯iconv支持,,iconv是一個(gè)計(jì)算機(jī)程序以及一套應(yīng)用程序編程接口的名稱,。它的作用是在多種國際編碼格式之間進(jìn)行文本內(nèi)碼的轉(zhuǎn)換。這對跨語言Qt開發(fā)人員來說是很有用的,,當(dāng)然,,考慮到中文的編碼,我也選擇加入支持。 38. -no-pch 是 否支持預(yù)編譯過的頭文件,。預(yù)編譯頭就是把一個(gè)工程中的一部分代碼,預(yù)先編譯好放在一個(gè)文件里(通常以.pch為擴(kuò)展名),,這個(gè)文件就稱為預(yù)編譯頭 文件。這些預(yù)先編譯好的代碼在工程開發(fā)的過程中不會被經(jīng)常改變,。如果這些代碼被修改,,則需要重新編譯生成預(yù)編譯頭文件。媽媽經(jīng)常說:不懂就要學(xué),。我說:不 懂就加上,。。,。 39. no-dbus 是否編譯編譯QtDBus模塊,。dbus是freedesktop下開源的Linux IPC通信機(jī)制,本身Linux 的IPC通信機(jī)制包括,,管道(fifo),,共享內(nèi)存,信號量,,消息隊(duì)列,,Socket等。在Qt中DBUS是有單獨(dú)的模塊的,,可見其重要性,。 40. -reduce-relocations 對于額外的庫鏈接器優(yōu)化,可以減少編譯中的再定位,。41. no-separate-debug-info 42. -xplatform target 相當(dāng)淺顯的參數(shù),,即交叉編譯的目標(biāo)平臺,一般來說根據(jù)你所要移植的目標(biāo)板來確定,。 43. -no-feature-<feature> 選 取qte的feature編譯,,對于這個(gè),我理解為特性,,特性的描述你可以參考src/corelib/global/qfeatures.txt,,在這 里面對于每個(gè)特性都有比較充分的講解。對于特性地選擇,,也是要根據(jù)開發(fā)需求進(jìn)行,,如果裁剪適當(dāng),能大大為qte庫瘦身,。 44. -embedded <arch> 嵌入式平臺架構(gòu)選擇,,可以選擇arm,,mips,x86及generic,,視你的目標(biāo)平臺決定吧,。 45. -armfpa 這個(gè)參數(shù)也只是針對ARM平臺的,是否加入對于基于ARM的浮點(diǎn)數(shù)格式的支持,,通常,,這個(gè)參數(shù)在編譯時(shí)會自動選擇。 46. -little-endian 目標(biāo)平臺的大端和小端選擇,,這應(yīng)該是常識了,如果這不知道,,就不要來混嵌入式了 47. -host-little-endian 主機(jī)平臺的大端和小端選擇,,屬于雞肋的參數(shù),不選擇也會在配置時(shí)自動選擇,。 48. -no-freetype 選擇freetype,,F(xiàn)reeType庫是一個(gè)完全免費(fèi)(開源)的、高質(zhì)量的且可移植的字體引擎,,它提供統(tǒng)一的接口來訪問多種字體格式文件,,在嵌入式開發(fā)中,有套可使用的字體對于中文開發(fā)至關(guān)重要,,本人一般使用文泉驛字體,。 49. -qconfig local 使用本地的qconfig配置文件來替代全部參數(shù)配置,有需要的可以去研究下,,可以裁剪控件級別的參數(shù),。 50. -depths <list> 顯示的像素位深,也是根據(jù)需要來進(jìn)行吧,。 51. -qt-decoration-<style> 這個(gè)是選擇qt的樣式風(fēng)格,,對于需要美化界面的項(xiàng)目來說,可以好好選擇下,。 52. -no-opengl 是否加入opengl的支持,,OpenGL是個(gè)專業(yè)的3D程序接口,是一個(gè)功能強(qiáng)大,,調(diào)用方便的底層3D圖形庫,。不過對于一般的開發(fā)來說,似乎有很少用到的地方,。 53. -qt-gfx-<driver> 這個(gè)是相當(dāng)重要的一個(gè)參數(shù),,選擇QtGui的圖形顯示驅(qū)動,比如我們在pc上使用qvfb模擬時(shí),,就應(yīng)該加入對qfvb的支持,。我們可以在 linuxfb,,transformed,qvfb,,vnc,,multiscreen這幾個(gè)中選擇。在平常的開發(fā)板上,,選擇linuxfb即可,。 54. -qt-kbd-<driver> 選擇鍵盤的驅(qū)動支持,可以支持usb鍵盤,,串口鍵盤等等,,也是在tty,usb ,,sl5000,, yopy, vr41xx ,,qvfb中選擇,。 55. qt-mouse-<driver> 鼠標(biāo)的驅(qū)動支持,一般都會選擇tslib,,可以完美地支持觸摸屏,,在pc,bus,,linuxtp,,yopy,vr41xx,,tslib,,qvfb中選擇吧。 56. -iwmmxt 加入iWMMXt指令的編譯,,也只是部分XScale架構(gòu)才具有,。 57. -no-glib 是否加入glib庫的支持,glib庫對應(yīng)即gtk庫,,就也是說加入后可以使用gtk,。 |
|