windows/linux下Qt可执行程序打包,linux桌面双击运行程序sh脚本

1、windows下Qt打包

windows下Qt的可执行文件打包简单的来说就是利用Qt自带依赖的打包工具windeployqt进行打包,该工具存在Qt安装目录下,执行命令为:windeployqt name.exe

打包依赖文件可参考如下链接中1-7步,后面的步骤是打包依赖文件为安装包的过程: 

Qt程序打包发布,含第三方库,详细教程。_清香可口柑的博客-CSDN博客_qt程序打包

 打包可执行文件为安装包可参考链接:

NSIS打包工具用法介绍与NSIS相关软件下载_夜雨听萧瑟的博客-CSDN博客_nsis打包教程

2、linux下Qt依赖文件打包,编写桌面双击运行程序sh脚本

 (1)使用QtCreator创建Qt的demo工程,选择release模式,生成可执行文件untitled1如下:

windows/linux下Qt可执行程序打包,linux桌面双击运行程序sh脚本_第1张图片

(2)将可执行文件untitled1拷贝到打包文件路径packDir下,如下:

windows/linux下Qt可执行程序打包,linux桌面双击运行程序sh脚本_第2张图片

(3)利用ldd 命令将执行文件依赖文件打包到文件中,编写的脚本如下:

#!/bin/bash
#S1打包的文件路径,$2可执行文件名
#package.sh打包脚本位于打包文件上一级目录,  eg:bash package.sh $PWD/packDirName untitled1
#$2"_lib_detail".txt 文件保存依赖文件详细情况

PACKAGE_Dir=$1
EXE_Name=$1/$2

dependlib_arr=($(ldd $EXE_Name | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))

ldd $EXE_Name | grep -o "/.*" | grep -o "/.*/[^[:space:]]*">$2"_lib_detail".txt 
num=0
for varlib in ${dependlib_arr[*]}
do
    cp "$varlib" $PACKAGE_Dir
    #echo $varlib
    let num+=1
done
echo "$2 of the dependency lib num is ${num}"
echo "Check the $2"_lib_detail".txt for details"


#ldd $EXE_Name输出依赖库
#grep -o "/.*" 只显示匹配的内容
#grep -o "/.*/[^[:space:]]*" 提取不包含空格的内容

打包脚本位于打包文件packDir上一层,如下:

 (4)运行打包脚本

 以上运行结果表示可执行文件依赖库文件数目25,依赖文件名详情记录于untitled1_lib_detail.txt。

打包结果如需:

windows/linux下Qt可执行程序打包,linux桌面双击运行程序sh脚本_第3张图片

windows/linux下Qt可执行程序打包,linux桌面双击运行程序sh脚本_第4张图片

 上面打包依赖脚本参考于:Linux下的QT程序的打包、运行、和关闭程序教程整理_linux qt_做一个坚强的女汉子的博客-CSDN博客

(5)在桌面编写运行程序脚本文件run.sh,如下:

windows/linux下Qt可执行程序打包,linux桌面双击运行程序sh脚本_第5张图片

注意脚本文件属性需设置为可执行属性,命令为$chmod +x run.sh,如下:

 双击脚本run.sh即可运行程序,如下:

windows/linux下Qt可执行程序打包,linux桌面双击运行程序sh脚本_第6张图片

你可能感兴趣的:(Qt,linux,qt,开发语言)