一、准备阶段

1.先将工程使用Release模式编译,得到可执行二进制文件(应用程序)
假设项目名:QtTest(项目名根据自己应用程序名而定)

2.新建目录QtTest ( 也可以与工程名不一致 )

3.在目录QtTest 下建立ldd_copy.sh脚本和 QtTest.sh 脚本 (与工程名一致)

ldd_copy.sh

#!/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 即可启动程序。

附件:
我的文件夹目录
在这里插入图片描述
另外:如果要指定运行库路径在当前可执行程序路径下还需要在.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 = .

https://zhuanlan.zhihu.com/p/95820992

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐