ubuntu下打包qt项目跨平台运行(详细)

30 篇文章 5 订阅

准备工作

1.生成可执行文件
qt使用Release模式编译
【有的时候编译后没有生成这个文件,需要在pro文件里面加上一句:QMAKE_LFLAGS += -no-pie】
在这里插入图片描述
2.新建文件夹

在桌面新建一个文件夹“qt_ctrl”

3.新建.sh文件

在文件夹“qt_ctrl”里新建两个.sh文件

copylib.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

untitled.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 "$@"

4.寻找qt安装目录里的platforms文件夹
找到qt安装目录里的platforms文件夹,然后复制到文件夹“qt_ctrl”里。

小编的platforms文件夹路径为:/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms
安装方式不同,路径可能不一样,有的在home,有的在opt。。。
(也可以参考路径:~/Qt5.9.5/5.9/gcc_64/plugins/platforms )

在这里插入图片描述

寻找lib文件

1.将copylib.sh放到可执行文件所在目录里:(build-untitled-unknown-Release)
然后执行:

chmod 777 copylib.sh
./copylib.sh  untitled      //untitled改成自己的可执行文件名

执行完后会生成一个lib文件夹
将这个lib文件夹里面的所有文件复制到文件夹“qt_ctrl”里。
将可执行文件“untitled”也复制到文件夹“qt_ctrl”里。
在这里插入图片描述

2.将copylib.sh放到qt_ctrl/platforms目录里

然后执行:

chmod 777 copylib.sh
./copylib.sh  libqxcb.so

同样,在platforms目录也会多出一个lib文件夹
将这个lib文件夹里面的所有文件复制到文件夹“qt_ctrl”里。
在这里插入图片描述
至此,所有的lib文件都已经准备齐全了。。。

跨平台运行

将“qt_ctrl”文件夹复制到其他电脑的ubuntu系统下就可运行
注意:运行时不能直接运行可执行文件,需要运行与之同名的.sh文件(untitled.sh)

chmod  -R 777 untitled.sh 
./untitled.sh

第一 次容易报错:Permission denied

/home/chenxd/qt_ctrl/untitled.sh: 12: /home/chenxd/qt_ctrl/untitled.sh: /home/chenxd/qt_ctrl/untitled: Permission denied

解决

sudo chmod -R 777 /home/chenxd/qt_ctrl  
sudo chmod -R 777 /home/chenxd/qt_ctrl/untitled.sh
/home/chenxd/qt_ctrl/untitled.sh

(注意改为自己文件路径)

[以后运行直接进入untitled.sh所在目录,执行:./untitled.sh就可以了](网络传言)
[小编发现当第一次“./untitled.sh”执行成功后,双击该可执行文件图标也可以直接运行了,将其复制到桌面,也能双击运行,这样方便了很多](小编亲测

在这里插入图片描述

在这里插入图片描述
(该项目打包好的文件:https://download.csdn.net/download/xx970829/15992965)

**参考链接:**https://blog.csdn.net/z3512498/article/details/64922180

  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值