參考文獻(xiàn):Machii
系統(tǒng)版本:Ubuntu 14.04 LTS
Qt開發(fā)完成之后,需要拿到?jīng)]有Qt環(huán)境的的系統(tǒng)上運(yùn)行,需要對其進(jìn)行發(fā)布.發(fā)部分為動態(tài)發(fā)布和靜態(tài)發(fā)布.
- 靜態(tài)發(fā)布:靜態(tài)發(fā)布需要靜態(tài)編譯Qt,我試了下沒有成功,比較麻煩,所使用的第三方庫也需要重新靜態(tài)編譯.比較麻煩,好處就是以后使用時(shí)部署比較簡單.
- 動態(tài)發(fā)布:動態(tài)發(fā)布就是把可執(zhí)行文件和其依賴的動態(tài)庫放在一起并設(shè)置變量路徑,下面就是動態(tài)發(fā)布的方法.
1 生成Release版本程序
QtCreate使用Release進(jìn)行編譯,將編譯出的可執(zhí)行程序拷貝到一個單獨(dú)的目錄,例如我放在了桌面的SCserverV1.0文件夾中.
2 準(zhǔn)備動態(tài)庫
可以使用ldd命令查看,用法:
首先cd到可執(zhí)行程序所在路徑下,然后
ldd <可執(zhí)行程序>
例如:

ldd 用法.png
下面是一個腳本,可以自動查找所需的動態(tài)庫并復(fù)制到制定目錄下:
#!/bin/sh
DIR="$( cd "$( dirname "$0" )" && pwd )"
exe="scsmart1.0" #發(fā)布的程序名稱
des=$DIR #你的路徑
deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
sudo cp $deplist $des
新建lddcp.sh,將上述內(nèi)容復(fù)制進(jìn)去,保存.
打開一個終端,在lddcp.sh所在目錄下,執(zhí)行命令:
chmod +x lddcp.sh #賦予其執(zhí)行權(quán)限
sudo ./lddcp.sh 執(zhí)行腳本
然后把整個文件夾復(fù)制到另一臺Ubuntu上執(zhí)行了
3 配置動態(tài)庫路徑
在終端中打開可執(zhí)行程序所在路徑,輸入:
export LD_LIBRARY_PATH=<動態(tài)庫路徑>:$LD_LIBRARY_PATH
可以將此條內(nèi)容寫入.bashrc,這樣就不用每次打開終端都設(shè)置路徑了.
cd ~
gedit ~/.bashrc
然后寫入上面那句話.
$4 執(zhí)行
賦予可執(zhí)行程序可執(zhí)行權(quán)限:
chmod +x SCserver1_0
然后執(zhí)行:
./SCserver1_0