QT編譯引數說明

2021-08-31 06:06:44 字數 4928 閱讀 8117

注:本文的例子都基於qt-embedded-linux-opensource-src-4.5.x

當進入解壓好的原始碼包後,使用./configure –help命令,可以獲得相應幫助

如果引數前面有*號,直接配置編譯的話,就會把這些引數預設進去。為了便於分析,接下來,我們以如下格式進行:

引數解釋

-release

編譯qt以發布版的模式進行,一般來說,最後系統完成後,庫就應該是發布版。

-debug

與上面對應,自然是除錯版了,如果開發的話,可以選擇它吧。

-developer-build

選了這個後,可以進行自動測試。

-shared

-static

這兩個引數是指qt的lib以動態還是靜態編譯生成。

-no-fast

-fast

如果選第乙個,則所有的工程檔案都會生成到makefiles中,因而編譯的時間就會很長。如果選第二個,那就只加入子目錄和庫到makefiles,這樣就能加快編譯的速度。

-no-largefile

-largefile

支不支援大檔案,一般來說,嵌入式裡是不會有從超過4g的大檔案的。

-no-exceptions

-exceptions

選則編譯器支援丟擲異常,否則不支援。

no-sql-

-qt-sql-

-plugin-sql-

qt自帶了大多數資料庫驅動,可以完美地支援資料庫的使用。對於資料庫的使用,我們可以直接qt驅動編譯進去,或者以外掛程式的形式編譯進去。一般來說,最簡單地就是直接編譯進去,但使用外掛程式形式的可以更加靈活,針對不同的需求將驅動外掛程式新增。其中,<>代表的是驅動名,如果我想直接新增sqlite的支援話,形式如下:-qt-sql-sqlite。其他名稱可以自己檢視引數裡,有詳細地介紹。

-system-sqlite

使用作業系統上的sqlite資料庫,如果是不太會移植的,可以考慮直接使用qt自帶的驅動。

no-xmlpatterns

-xmlpatterns

選擇對xml的支援,如果對網路無需求的話,就不用加了。

-no-phonon

-phonon

phonon是qt中處理多**的模組

-no-phonon-backend

-phonon-backend

與上面類似,只不過這兩者是以外掛程式的形式加入支援。

-no-svg

-svg

svg即可縮放向量圖形。

-no-scripttools

-scripttools

是否加入指令碼工具的支援,這對php等指令碼工程師來說是個很棒的引數。

-platform target

目標平台,這可是關鍵了,如果不注意的話,編譯出來是x86上的話,哪怕是再牛的嵌入式工程師來也沒法幫你移植到開發板上。通常,本人是linux-arm-g++。

-no-mmx

-no-3dnow

-no-sse

-no-sse2

這四個引數是針對cpu的指令集。

-qtnamespace

把qt的庫封裝到命名空間。

-qtlibinfix

將所有的qt的.so庫重新命名。

如果是-no-xx-,就說明編譯時不選擇這個引數,如過是-qt-xx-,說明我們可以編譯直接選用qt自帶的驅動,如果是-plugin-xx-,就是將驅動以外掛程式形式編譯,而-system-***,當然是使用作業系統提供的驅動,不過那就需要您自己移植了,而且有時還要用第三方的api,就方便來說非常麻煩

-no-libtiff

-qt-libtiff

-system-libtiff

tiff是一種非常複雜的光柵影象格式,並且有直接現成的c語言實現庫,因此選擇引數時就有了qt和system。

-no-openssl

-openssl

-openssl-linked

ssl(security socket layer)是乙個安全傳輸協議,在internet網上進行資料保護和身份確認,而openssl是乙個開放源**的實現了ssl及相關加密技術的軟體包,在qt中,我們可以選擇直接支援,或者openssl鏈結支援。

以上是第三方庫的引數選擇,緊接著就是qt附加引數,在附加引數裡,我們可以指定編譯的部分及加入引數來獲取資訊。

-make

-nomake

一句話說明就是可以通過這兩個引數來選擇哪些要編譯,哪些不需要,通過適當的選擇,可以大大加快編譯的速度。

-r -l

這兩個引數是為編譯時增加乙個庫的執行路徑及標頭檔案的路徑,比如使用tslib作為開發觸控驅動時,我們就應使用這兩個引數來指定tslib的庫路徑和標頭檔案路徑。

-no-rpath

-rpath

簡單地說,就是告訴動態載入器,到-rpath指定的目錄中尋找編譯時須要的動態鏈結庫,語法就與上面的引數結合,比如 -rpath -r/home/***x。

-continue

這個引數的作用就是當出現錯誤時依然進行配置編譯,換我是不會加上的。

-verbose, -v

顯示配置的每一步的具體資訊。

-no-optimized-qmake

-optimized-qmake

是否編譯生成優化過的qmake。

-no-nis

-nis

nis(網路資訊服務)是乙個提供目錄服務的rpc(遠端過程呼叫)應用服務,當然沒網路需要的可以再次華麗地無視。

-no-cups

-cups

cups給unix/linux使用者提供了一種可靠有效的方法來管理列印。它支援ipp,並提供了lpd,smb(服務訊息塊,如配置為微軟windows的印表機)、jetdirect等介面。cups還可以瀏覽網路印表機。它的開發提供者是蘋果公司。

-no-iconv

-iconv

iconv是乙個電腦程式以及一套應用程式程式設計介面的名稱。它的作用是在多種國際編碼格式之間進行文字內碼的轉換,這對跨語言qt開發人員來說是很有用的。

-no-pch

-pch

是否支援預編譯過的標頭檔案。預編譯頭就是把乙個工程中的一部分**,預先編譯好放在乙個檔案裡(通常以.pch為副檔名),這個檔案就稱為預編譯標頭檔案。這些預先編譯好的**在工程開發的過程中不會被經常改變。如果這些**被修改,則需要重新編譯生成預編譯標頭檔案。

no-dbus

-dbus

-dbus-linked

是否編譯編譯qtdbus模組。dbus是freedesktop下開源的linux ipc通訊機制,本身linux 的ipc通訊機制包括,管道(fifo),共享記憶體,訊號量,訊息佇列,socket等。在qt中dbus是有單獨的模組的,可見其重要性。

-reduce-relocations

對於額外的庫鏈結器優化,可以減少編譯中的再定位。

no-separate-debug-info

-separate-debug-info

是否儲存debug資訊在.debug,一般為了查錯,還是選擇儲存吧。

xplatform target

即交叉編譯的目標平台,一般來說根據你所要移植的目標板來確定。

-no-feature-

-feature-

選取qte的feature編譯,對於這個,我理解為特性,特性的描述你可以參考src/corelib/global/qfeatures.txt,在這裡面對於每個特性都有比較充分的講解。對於特性地選擇,也是要根據開發需求進行,如果裁剪適當,能大大為qte庫**。

-embedded

嵌入式平台架構選擇,可以選擇arm,mips,x86及generic,視你的目標平台決定吧。

-armfpa

-no-armfpa

這個引數也只是針對arm平台的,是否加入對於基於arm的浮點數格式的支援,通常,這個引數在編譯時會自動選擇。

-little-endian

-big-endian

目標平台的大端和小端選擇。

-host-little-endian

-host-big-endia

主機平台的大端和小端選擇。

-no-freetype

-qt-freetype

-system-freetype

選擇freetype,freetype庫是乙個完全免費(開源)的、高質量的且可移植的字型引擎,它提供統一的介面來訪問多種字型格式檔案。

-qconfig local

使用本地的qconfig配置檔案來替代全部引數配置,可以裁剪控制項級別的引數。

-depths

顯示的畫素位深。

-qt-decoration-

-plugin-decoration-

-no-decoration-

這個是選擇qt的樣式風格。

-qt-gfx-

-plugin-gfx-

-no-gfx-

這個是相當重要的乙個引數,選擇qtgui的圖形顯示驅動,比如我們在pc上使用qvfb模擬時,就應該加入對qfvb的支援。我們可以在linuxfb,transformed,qvfb,vnc,multiscreen這幾個中選擇。在平常的開發板上,選擇linuxfb即可。

-qt-kbd-

-plugin-kbd-

-no-kbd-

選擇鍵盤的驅動支援,可以支援usb鍵盤,串列埠鍵盤等等,也是在tty,usb ,sl5000, yopy, vr41xx ,qvfb中選擇。

qt-mouse-

-plugin-mouse-

-no-mouse-

滑鼠的驅動支援,一般都會選擇tslib,可以完美地支援觸控螢幕,在pc,bus,linuxtp,yopy,vr41xx,tslib,qvfb中選擇吧。

-iwmmxt

加入iwmmxt指令的編譯,也只是部分xscale架構才具有。

-no-glib

-glib

glib庫對應即gtk庫,就也是說加入後可以使用gtk。

MySQL 編譯引數說明

quote usr sbin groupadd mysql usr sbin useradd g mysql mysql tar zxvf mysql 5.4.0 beta.tar.gz cd mysql 5.4.0 beta cflags o6 mpentiumpro fomit frame po...

gcc常用編譯引數說明

gcc編譯引數 g 為了gdb除錯使用,預設加上有利於後期直接定位coredump o2 優化選項 o0 o1 o2 o3 o0 不進行優化處理。o 或 o1 優化生成 o2 進一步優化。o3 比 o2 更進一步優化,包括 inline 函式 pipe 使用管道代替編譯中臨時檔案,加速編譯 wall...

MSVC編譯器編譯引數說明

通過msvc編譯,發現編譯引數 od 禁用優化 ox 完全優化 o1 使大小最小化 o2 使速度最大化 d win32 d debug 預處理器定義 即預定義巨集 zi 除錯資訊格式 用於 編輯並繼續 的程式資料庫 w3 警告等級 wx 不將警告視為錯誤 wx 將警告視為錯誤 sdl 不進行sdl檢...