C++學(xué)習(xí)筆記(八) - Qt 發(fā)布(動態(tài)鏈接發(fā)布)

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

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

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