開發(fā)環(huán)境系統(tǒng)版本::Ubuntu 16.04 LTS
程序測(cè)試環(huán)境系統(tǒng)版本:Ubuntu 16.04 LTS & Ubuntu Server 16.04
Qt版本:QT5.8.0
前言:前面寫了一篇Qt5動(dòng)態(tài)發(fā)布的方法长已,可是測(cè)試中發(fā)現(xiàn)使用起來還是很復(fù)雜悬蔽,我的程序涉及到數(shù)據(jù)庫,websocket,tcp等,組件太多氓侧,程序雖然能正常運(yùn)行,但是數(shù)據(jù)庫無法連接晌姚,必須要安裝Qt5和MySQL的驅(qū)動(dòng)才可以沪曙。所以繼續(xù)研究qt的靜態(tài)發(fā)布。
qt靜態(tài)發(fā)布網(wǎng)上有眾多教程,官網(wǎng)也有一個(gè)教程linux-deployment,巴特按厘,沒一個(gè)現(xiàn)在還能用的医吊。官網(wǎng)的教程不能使用我認(rèn)為還是有原因的,我搞到最后才發(fā)現(xiàn)逮京,這可能就是企業(yè)版和開源免費(fèi)版的區(qū)別卿堂。
下面進(jìn)入正題,我分享一下我這一個(gè)星期摸索的成果懒棉。目前實(shí)現(xiàn)了靜態(tài)發(fā)布之后的程序草描,在相同版本Linux和server上能夠直接運(yùn)行,不需要安裝任何東西漓藕。
1 靜態(tài)編譯Qt
首先需要下載qt的源碼:qt-everywhere-opensource-src-5.8.0.tar.gz陶珠,解壓在某個(gè)目錄下。
然后從Terminal進(jìn)入該文件夾享钞。
輸入指令:
./configure --help
會(huì)看到一堆幫助文檔揍诽,可以對(duì)著幫助文檔把自己不需要的部分刪掉,刪除的方法就是后面的栗竖,不編譯或者跳過暑脆。編譯的東西越多越容易報(bào)錯(cuò),不同版本的幫助文檔也不相同狐肢。
然后輸入以下指令:
sudo ./configure -prefix /home/qking/Documents/Qt5.8.static -continue -opensource -confirm-license -static -no-opengl -sql-mysql -no-compile-examples -no-dbus -skip qtquickcontrols -skip qtquickcontrols2 -skip qtsensors -skip qtdoc -skip qtwayland
只解釋幾個(gè)重要的:
- -prefix /home/qking/Documents/Qt5.8.static 是指定靜態(tài)庫安裝目錄
- -continue 有錯(cuò)誤也盡量繼續(xù)編譯
- -static 靜態(tài)編譯
- -no-opengl 不要opengl
- -skip 跳過后面的模塊
反正添吗,哪里有問題,你就看自己會(huì)不會(huì)用到份名,用不到就到幫助文檔里找以下怎么跳過碟联。
下一步就是執(zhí)行:
sudo make
過了很久之后,沒有error僵腺,就執(zhí)行make install
靜態(tài)編譯qt會(huì)很艱難鲤孵,有什么問題互相交流吧。
marke一個(gè)環(huán)境變量的配置辰如,不曉得是不是必需的普监,如果后面的步驟出現(xiàn)什么問題,可以試一下琉兜。
QTDIR= /home/qking/Documents/Qt5.8.static
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/global:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATH LD_LIBRARY_PATH
2 靜態(tài)編譯程序
上面完成之后就可以靜態(tài)編譯程序了凯正,首先設(shè)置qt creator,引入我們的靜態(tài)庫豌蟋。
2.1 添加靜態(tài)庫
點(diǎn)擊tool-options-Build&Run廊散,然后選擇Qt Versions
選項(xiàng)卡:
點(diǎn)擊add,到靜態(tài)庫的哪個(gè)安裝目錄下梧疲,找到bin/qmake奸汇,添加進(jìn)來:
復(fù)制下面的Versionname后面的內(nèi)容施符。
選擇Kits
選項(xiàng)卡,點(diǎn)擊add:
在name
那一欄粘貼剛才復(fù)制的名字擂找,檢查一下Qt Version
是不是靜態(tài)庫的,然后點(diǎn)擊旁邊的Make Default
設(shè)置為默認(rèn)浩销。
2.2 靜態(tài)編譯程序
首先打開自己的工程目錄贯涎,刪掉后綴為.pro.user
和.pro.user.677b2d5
的兩個(gè)文件,第二個(gè)可能是相似慢洋。然后重新使用qt打開工程塘雳,它就會(huì)提示你重新選擇編譯所用的kits,選擇靜態(tài)的就好了普筹。
然后編譯程序败明,編譯出的就是靜態(tài)的程序,只將可執(zhí)行文件拷出來就可以在其他電腦上執(zhí)行太防。文件大小在M以上妻顶,動(dòng)態(tài)的一般只有幾百K。
參考文獻(xiàn):
Qt 官網(wǎng)
Linux 下 靜態(tài)編譯Qt程序
拜謝各位大神蜒车,希望大家多多交流讳嘱。