Linux下发布QT程序_linux qt 发布

#!/bin/sh

LibDir=$PWD"/lib"
Target=$1

lib\_array=($(ldd $Target | grep -o "/.\*" | grep -o "/.\*/[^[:space:]]\*"))

$(mkdir $LibDir)

for Variable in ${lib\_array[@]}
do
	cp "$Variable" $LibDir
done

QtTest.sh

#!/bin/sh

appname=`basename $0 | sed s,\.sh$,,`  
dirname=`dirname $0`  
tmp="${dirname#?}"  

if [ "${dirname%$tmp}" != "/" ]; then  
dirname=$PWD/$dirname  
fi

# set font path
#QT\_QPA\_FONTDIR=$dirname/fonts
#export QT\_QPA\_FONTDIR

# set library path 
LD\_LIBRARY\_PATH=$LD\_LIBRATY\_PATH:$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"

4.sudo chmod 777 ldd_copy.sh 和 sudo chmod 777 QtTest.sh (修改权限)

二、提取依赖包

1.将ldd_copy.sh脚本复制到程序编译输出文件夹中;
如build-caculator-Desktop_Qt_5_9_9_Release

2.进入build-caculator-Desktop_Qt_5_9_9_Release中:
(1) 运行命令sudo ./ldd_copy.sh QtTest(会在该文件夹中生成一个lib文件夹),如果报错就sudo bash.
(2)将lib里所有的文件和运行程序build-caculator-Desktop_Qt_5_9_9_Release/QtTest复制到自己新建目录QtTest中(不要复制文件夹,直接把文件夹下的东西复制进去),然后将lib文件夹删除

3.进入QT的安装目录,进入platforms文件夹中
我的是/usr/local/Qt-5.12.10/plugins/platforms, 将 ldd_copy.sh拷贝到此目录下
(1)运行命令sudo ./ldd_copy.sh libqxcb.so (会在该文件夹中生成一个lib文件夹),如果报错就sudo bash.
(2)将lib里所有的文件复制到目录QtTest中,复制中有相同文件可以替换;
(3)删除该文件夹中的lib 和 ldd_copy.sh;

4.将整个platforms文件夹复制目录QtTest中, 这时复制的是整个文件夹,这使得目录SiSPdfReader中会多出一个platforms文件夹;

5.将/usr/local/Qt-5.12.10/plugins下imageformats、platforminputcontexts目录拷贝目录QtTest中,其中imageformats目录下是支持不同格式图片的库文件,platforminputcontexts目录下是支持中文输入的库文件;

6.选做,给Qt运行程序指定字体
将/usr/local/Qt-5.12.10下/lib/fonts目录拷贝到目录QtTest中,lib目录中fonts中存放了字体文件;如果指定字体,则将# set font path下这两行解除注释
#QT_QPA_FONTDIR=$dirname/fonts
#export QT_QPA_FONTDIR

三、运行程序

将上述新建的QtTest文件夹拷贝到其他未安装QT的相同linux系统下,直接运行目录中脚本 ./SiSPdfReader.sh 即可启动程序。

附件:
我的文件夹目录
Linux下发布QT程序_linux qt 发布_第1张图片
另外:如果要指定运行库路径在当前可执行程序路径下还需要在.pro文件里配置-rpath

# set run library path
unix:!macx:QMAKE_LFLAGS += -Wl,-rpath,\'\$$ORIGIN/lib\'

并在打包发布程序时配置qt.conf文件

[Paths]
Prefix=./
Libraries=./lib
Binaries=./bin
Plugins=./plugins
Imports=./imports
Qml2Imports=./qml
Translations = ./translations
Documentation = ./doc
Headers = ./include
Demos= /.demos
Examples= ./examples
Data = .
Settings = .

你可能感兴趣的:(linux,qt,数据库)