Linux下打包發(fā)布Qt應(yīng)用程序
Linux下使用Qt進(jìn)行開發(fā)的程序,如果想要在其他搭載Linux系統(tǒng)的主機上運行則需要將要發(fā)布的Qt程序依賴的一些動態(tài)鏈接庫一起打包。具體做法如下:
1. 編譯文件
在Qt中使用release的方式編譯出可執(zhí)行文件,然后新建一個文件夾,將可執(zhí)行文件拷貝進(jìn)去備用。
2.巧用腳本文件
這里以Server可執(zhí)行文件為例。
在新建的文件夾下,新建兩個腳本文件:
新建文件
pack.sh
-
Server.sh
這個腳本文件名必須和要發(fā)布的程序名字相同,所以為 Server
新建文件后,文件夾包含內(nèi)容如下:
文件夾內(nèi)容
添加腳本
向pack.sh
文件里添加以下內(nèi)容:
#!/bin/sh
exe="Server" #你需要發(fā)布的程序名稱
des="/home/mrzhong/server" #創(chuàng)建文件夾的位置
deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des
然后向Server.sh
文件里添加以下內(nèi)容(內(nèi)容不需要更改):
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
執(zhí)行腳本
終端進(jìn)入文件夾目錄,運行:
./pack.sh
可執(zhí)行文件依賴的鏈接庫將會拷貝到所在的目錄,如圖:
alt
在其他主機里面使用和可執(zhí)行文件同名的腳本文件(這里為Server.sh
)運行程序即可。
打包發(fā)布
最后將這個文件打包后拷貝到其他主機上即可運行。