Qt笔记----》不同环境程序打包

发布于:2025-04-02 ⋅ 阅读:(28) ⋅ 点赞:(0)

概要

qt不同运行环境下打包方式:windows/linux

1、windows环境下打包qt程序

参考此博主的文档:https://blog.csdn.net/qq_28446813/article/details/124134121

2、linux环境下打包qt程序

2.1、程序目录

(1)、打包流程

  • 创建一个空文件夹
  • 准备运行脚本
  • 生成qt依赖库
  • 添加qt依赖库

(2)、打包后的程序目录
在这里插入图片描述

2.2、创建一个空文件夹

          创建一个空文件夹,用于存储预打包文件,此处创建了一个名为“testTool”的文件夹

2.3、添加依赖脚本

准备两个脚本,分别为“ldd.sh”和“test02.sh”(test02为项目名)

(1)、ldd.sh
       一个用来提取目标可执行文件依赖的所有动态链接库,并将这些库复制到一个名为lib的目录中;

#!/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

(2)、test02.sh(test02为项目名称)
        设置动态链接库的搜索路径(LD_LIBRARY_PATH),使其指向脚本所在的目录,然后执行与脚本同名(去掉 .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 "$@"

(3)、添加权限

   sudo chmod 777 ldd.sh
   sudo chmod 777 test02.sh

2.4、打包过程

打包过程分为:添加程序依赖库和QT依赖的库

2.4.1、添加程序依赖库

(1)、新建一个空文件夹,目录与项目所处位置并列,用于存放程序以及动态库,例如“testTool”文件夹

   mkdir /home/luck/project/test/testTool

在这里插入图片描述(2)、将ldd.sh 脚本复制到编译目录,如“build-test02-Desktop.Qt 5 14 2GCc 64bit-Release”;
在这里插入图片描述(3)、执行以下命令,会在当前目录生成lib文件夹,其中存放着运行test02所依赖的库文件。

   ./ldd.sh test02   //test02是项目名称

在这里插入图片描述(4)、将lib文件夹中的所有文件复制到第1步新建的文件夹“testTool文件夹”中。至此,就可以删除生成的lib文件夹和ldd.sh脚本了
在这里插入图片描述

2.4.2、添加Qt相关依赖库

(1)、将ldd.sh脚本复制到Qt的安装目录文件“/home/luck/software/Qt/qt5142/5.14.2/gcc_64/plugins/platforms”文件夹中;
在这里插入图片描述(2)、执行“./ldd.sh libqxcb.so*”,将生成的lib文件夹中的所有文件拷贝到“testTool”文件夹中,可能有重复的,直接替换即可。(拷贝完后,QT安装目录下刚才生成lib文件可以删除)
在这里插入图片描述
(3)、返回上级,将qt安装目录下的“…/5.14.2/gcc_64/plugins”中的“platforms和sqldrivers”两个文件拷贝到程序打包文件夹“testTool"中。
在这里插入图片描述(4)、ldd.sh生成完库文件后可删除,将testTool整个文件夹打包压缩即可,在其他电脑linux环境下压缩后直接运行可执行文件即可。
在这里插入图片描述