Linux 打包QT写的软件

参考:

如何打包我们用 Qt 写的软件 - Linux 篇 - 知乎

 0、准备两个脚本

  • ldd.sh脚本

#!/bin/bash
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
  • 08-UI-doubleCamera.sh脚本

注意该脚本的名称必须和程序名一致。

#!/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 "$@"

给这两个脚本加权限

sudo chmod 777 ldd.sh
sudo chmod 777 hubeihdbtoexcel.sh

一、添加程序依赖库

1)新建一个空的文件夹,用于存放程序及其动态库。例如“exe_and_so文件夹”;

 2)将ldd.sh脚本复制到编译目录,如“build-08UIdoubleCameraDesktop_Qt_5_14_2_GCC_64bit-Release”;

3)执行“./ldd.sh hubeihdbtoexcel”,会在当前目录生成lib文件夹。其中存放着运行08UIdoubleCamera所依赖的库文件;

4)将lib文件夹中的所有文件复制到第1步新建的文件夹“exe_and_so文件夹”中。至此,就可以删除生成的lib文件夹和ldd.sh脚本了

二、添加Qt 相关依赖库

(1)将ldd.sh脚本复制到Qt5安装目录的platforms文件夹中;

 (2)执行“./ldd.sh libqxcb.so”,将生成的lib文件夹中的所有文件拷贝到“exe_and_so文件夹”中。有些库可能重复,点击“替换”即可。执行完该步骤后就可以删除生成的lib文件夹和ldd.sh脚本了;

3)返回上一级,将platforms整个文件夹拷贝到“exe_and_so文件夹”中,层级关系如下图;

4)该步骤为可选步骤。如果所编写的程序有操作数据库的动作,还需要将与platforms同级目录中的sqldrivers文件夹也拷贝到“exe_and_so文件夹”中;

5)最后将08-UI-doubleCamerash.sh脚本 、08-UI-doubleCamerash可执行文件拷贝到“exe_and_so文件夹”中即可。然后将整个“exe_and_so文件夹”压缩就可以在其他机器上解压缩后运行。

三、运行验证

在“exe_and_so文件夹”处打开终端,执行“./08-UI-doubleCamerash.sh“,程序正常运行

猜你喜欢

转载自blog.csdn.net/weixin_45824067/article/details/130995404
今日推荐