Ubuntu14.04下靜態(tài)編譯Qt

一、什么是Qt

Qt是一個(gè)1991年由奇趣科技開發(fā)的跨平臺(tái)C++圖形用戶界面應(yīng)用程序開發(fā)框架。它既可以開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。

我剛好是需要在Linux環(huán)境下做一個(gè)基于圖像應(yīng)用的測(cè)試,所以就用到了這個(gè)跨平臺(tái)的框架。

二、為什么要靜態(tài)編譯

Linux下Qt編譯出來的程序是默認(rèn)動(dòng)態(tài)編譯的,C/C++也是默認(rèn)動(dòng)態(tài)編譯的,那為什么需要靜態(tài)編譯呢?

1.是個(gè)人后面要在gem5平臺(tái)上測(cè)試程序,必須要靜態(tài)編譯后的二進(jìn)制文件

2.核心價(jià)值還是,動(dòng)態(tài)編譯出來的Qt程序是要依賴于系統(tǒng)Qt庫(kù)的,也就是這個(gè)程序移到別的沒有安裝Qt庫(kù)的系統(tǒng)上是不能使用的,會(huì)提示缺少各類庫(kù)文件的錯(cuò)誤。

3.但是要說明的一點(diǎn),靜態(tài)編譯后的可執(zhí)行文件會(huì)變大很多。這是因?yàn)樵诰幾g時(shí),將可執(zhí)行文件需要調(diào)用的對(duì)應(yīng)動(dòng)態(tài)鏈接庫(kù)(.so)中的部分提取出來,鏈接到可執(zhí)行文件中去,使可執(zhí)行文件在運(yùn)行的時(shí)候不依賴于動(dòng)態(tài)鏈接庫(kù)。

三、Linux下如何安裝靜態(tài)編譯Qt環(huán)境

1.首先就是需要一個(gè)靜態(tài)編譯安裝的Qt,注意!??!是靜態(tài)編譯安裝的。

這里我走了很多彎路。。。大家注意先看清楚

Qt官網(wǎng)(http://download.qt.io/archive/qt/)下有很多版本可以下,目前最新的已經(jīng)是5.8.X了,這里直接給了大家下載的連接。但是5.0.X以上的版本,Linux下的Qt就都是.run類型了。

這個(gè)確實(shí)是可以直接安裝的類型,而且安裝起來很方便,但是我們是需要靜態(tài)編譯安裝的,所以只能用源代碼安裝的方式。

2.下載源碼XXX.tar.gz【我這里用的成功的是qt-everywhere-opensource-src-4.8.6.tar.gz】鏈接:(http://pan.baidu.com/s/1i5wqq9J)

網(wǎng)上還有蠻多qt-X11-opensource-src.4.5.1/4.5.3一類的教程,這些我都試過,在configure或者make階段,總是會(huì)出現(xiàn)各種錯(cuò)誤,最后實(shí)在解決不了,我就換用了稍微新一點(diǎn)的版本,然后。。沒有錯(cuò)誤。

3.解壓到Ubuntu下某一目錄

tar -zxvf qt-everywhere-opensource-src-4.8.6.tar.gz

4.裝g++

sudo apt-get install g++

由于我是剛安裝的純凈的Ubuntu,所以這些都還沒有安裝,如果你已有,就可以忽略啦。

5.配置需要的安裝包

sudo apt-get install build-essential libpcap0.8-dev libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev

6.進(jìn)入qt解壓目錄,配置configure命令【建議從這里開始用root身份,避免一些不必要的錯(cuò)誤,或者加sudo】

./configure -static -release -qt-zlib -qt-libpng -qt-libmng -qt-libjpeg -nomake demos -nomake examples -qt-sql-sqlite -prefix /usr/local/Trolltech/Qt-4.8.6_static

參數(shù)-static 指的是要**采用靜態(tài)編譯Qt**的方法

參數(shù)-release指的是只編譯release版本的庫(kù)

參數(shù)-qt-zlib -qt-libpng -qt-libmng -qt-libjpeg 是更好確定Qt編譯出的程序能在目前不知的系統(tǒng)下運(yùn)行【可要可不要】

參數(shù)-nomake demos -nomake examples 指的是不編譯demos和examples

參數(shù) -prefix /usr/local/Trolltech/Qt-4.8.6_static 指明靜態(tài)編譯的Qt安裝的目錄,據(jù)說沒有這個(gè),就會(huì)覆蓋掉你之前安裝的動(dòng)態(tài)編譯安裝的Qt(如果有的話)

7.沒問題之后,這一步時(shí)間較長(zhǎng)

make

8.沒問題后安裝

make install

9.配置環(huán)境變量,修改/home/你的名字/.profile文件,這是個(gè)隱藏文件(ls -a就會(huì)顯示出來),在文末加入下面內(nèi)容

QTDIR=/usr/local/Trolltech/Qt-4.8.6_static/

PATH=$QTDIR/bin:$PATH

MANPATH=$QTDIR/doc/man:$MANPATH

LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QTDIR PATH MANPATH LD_LIBRARY_PATH

10.重啟,輸入qmake就可以看到會(huì)顯示用法啥的了。至此,靜態(tài)編譯的Qt環(huán)境就安裝好了。

四、如何靜態(tài)編譯Qt程序

1.比如現(xiàn)在有一個(gè)test.cpp文件

2.生成.pro文件

qmake -project

3.修改.pro文件,在里面加上

CONFIG+=static

4.生成Makefile文件

qmake

5.修改Makefile文件,在CXXflags選項(xiàng)后面加上 -static

6.生成可執(zhí)行二進(jìn)制文件

make

7.好啦,至此,可以看到可執(zhí)行文件test啦,可以用ls -lh查看它的大小,一般的代碼會(huì)有十幾兆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容