Linux下Qt程序的打包发布

1.找个位置新建空文件夹Progream,存放打包后的文件;

2.将Qt项目用Release模式编译运行一遍,确保在shadow目录下生成可执行程序 Progream;

shadow目录
3.在shadow目录中新建脚本copylib.sh;

#!/bin/bash

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

lib_array=($(ldd $Target | grep -o “/." | grep -o "/./[1]*”))

$(mkdir $LibDir)

for Variable in l i b a r r a y [ @ ] d o c p " {lib_array[@]} do cp " libarray[@]docp"Variable" $LibDir
done
4.在Terminal中,通过指令赋值权限 ;

sudo chmod 777 copylib.sh
5.在Terminal中,输入./copylib.sh progream

其中, giptables 是运行copylib.sh 脚本的参数,脚本实际上是调用了 ldd ocs指令获得ocs运行时需要哪些库,并将库都复制放到当前目录的lib文件夹中。

生成lib文件夹
6.将① progream的可执行程序、② lib文件夹里面全部的文件 复制到 Progream文件夹中;

7.将lib文件夹删除;

8.进入Qt的安装目录,找到platforms目录;

platforms目录位置
我的路径是:/home/book/Qt5.12.6/5.12.6/gcc_64/plugins/platforms
PS: Terminal中输入pwd 是显示当前的绝对路径
9.将第3步的copylib.sh放到platforms目录中,并运行 ./copylib.sh libqxcb.so,这时也会得到一个lib文件夹 、libqxcb.so的库文件;

lib文件夹 、libqxcb.so的库文件
注:xcb是移植的重要文件,如果拷贝错误将不能在目标主机运行。
10.将platforms整个文件夹拷贝到Progream,并删除原先文件夹中的libxcb.so库文件夹;

拷贝platforms
疑问1:这里的原先文件夹是指Qt安装目录下的那个platforms文件夹吗?
疑问2:要删除的是 libxcb.so 文件吗?还是说作者本来想打的是 libqxcb.so 呢?

要删除这两个 libxcb 文件吗?
11.将拷贝后的库文件夹的东西全部放到SerialPort目录下。即将Progream/platforms/lib/* 拷贝到Progream下。并删除Progream/platforms/lib文件夹及其所属文件。

12.在Progream文件夹中新建脚本progream.sh

#!/bin/sh
appname=basename $0 | sed s,\.sh$,,

dirname=dirname $0
tmp="${dirname#?}"

if [ “KaTeX parse error: Expected '}', got 'EOF' at end of input: {dirname%tmp}” != “/” ]; then
dirname= P W D / PWD/ PWD/dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
d i r n a m e / dirname/ dirname/appname “$@”

新建脚本
13.赋值赋值权限,chmod 777 progream.sh ;

14.到现在,可以将Progream文件夹拷贝到目标主机上运行了。在目标主机上运行程序是采用./progream.sh运行,而不是直接点击progream.


  1. :space: ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值