LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

2.怎么办下的打包发布步骤:先说

2023年4月6日 162点热度

目录

1.发觉的问题:

明天发觉,linux的编译好的qt程序发布移植,相比windows下的发布移植,多了一些步骤

window下直接用qt携带的windeployqt打包工具,在你要打包的应用程序目录下用命令执行:windeployqt+你要发布的应用程序名arch linux,如windployqtgame.exe

然而linux下的发布,就没有这么简单了,起码我的是这样子的。由于linux下的qt没有自带的打包工具。你也可以去下载,有前辈写好了,去下安装就行了。不过安装好以后,后续的步骤也蛮麻烦的,我就不用这些技巧了。

我直接用linux下的命令打包吧。接出来步入题外话:

2.如何办?linux下的打包发布步骤如下:

先说一下我开发所在的笔记本:我如今编译应用程序的环境是:ubantu18.04版本的,开发环境:Qt5.12.0编译环境:gcc_64

要移植的笔记本:ubantu16.04版本没有开发环境

第一步:打包依赖库

我的编译好的发布目录下没有其他库,只有一个可执行的应用程序,可以执行,由于我有qt的开发环境linux系统移植步骤,他会手动找寻链接所要的库,而且没有qt环境的笔记本就不能运行。所以我们要把它运行时所依赖的库全部给他弄到发挎包起来,看下一步

在发布目录下新建一个脚本

内容如下:

#!/usr/bin/sh
exe="UpdateClient" #程序名称
des="/home/yicaibao/Qt5.12.0/qtProject/UpdateClient/bin/fabu-release" #打包文件夹位置
deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  
cp $deplist $des

注意一下:改一下程序名称和你要打包的文件位置,按照你的来

之后在脚本文件所在的文件目录下,命令行执行脚本:shpack.sh

步入打包的文件夹下,会发觉有好多库,这种就是要依赖的库,那这样就完了吗?还不行,还有一些库须要拿进来。

第一个库:步入在qt安装位置下编译环境的plugins目录下

之后把plugins目录下的platforms目录复制到要打包的目录下

执行命令:cp-rplatforms//home/yicaibao/Qt5.12.0/qtProject/UpdateClient/bin/fabu-release

这是一个目录,不要把目录上面的文件掏出来,放进刚才打包好的库一起,是不行的

还有两个库:libQt5XcbQpa.so.5.12.0和libQt5DBus.so.5.12.0

在qt安装编译环境目录的lib目录下

把这两个库复制到打包发布目录下

将可执行程序也复制到该目录下

大功告成!

linux移植有哪些步骤_linux系统移植步骤_linux系统移植步骤

将其打包好,接出来就可以移植到其他笔记本上了

第二步:移植到其它笔记本,并做好配置

将压缩包拷贝到,要移植的笔记本上,解压

我们步入解压目录,直接运行,在命令行运行,发觉报错,提示找不到依赖库

而且认真看一下,我们不是打包过来了吗?那些缺乏的库,为何还报错呢?

由于在程序运行时,它默认寻觅的库是在系统lib目录下,并不在发布的文件夹下,报错信息中就可以晓得

怎样办呢?

linux系统移植步骤_linux系统移植步骤_linux移植有哪些步骤

我们改一下库依赖路径就行了

在命令行写输入:

exportLD_LIBRARY_PATH='你的库路径':$LD_LIBRARY_PATH

export LD_LIBRARY_PATH='/home/valwell/tmp/fabu-release':$LD_LIBRARY_PATH

再度运行,还是报错了

报错信息不是很明晰,并且按照提示肯定是少插件了,具体不晓得是哪些

在命令下执行:exportQT_DEBUG_PLUGINS=1

这个命令可以帮我们输出程序运行时,加载插件时的调试信息

执行命令后,再度执行,发觉提示RED HAT LINUX 9.0,少了libQt5XcbQpa.so.5的库,并且我们把Qt这边的库打包了libQt5XcbQpa.so.5.12.0的库,而且他要的是.so.5后缀的库,怎样办呢?

我们软链接过来就行了,命令行执行:ln-slibQt5XcbQpa.so.5.12.0libQt5XcbQpa.so.5

再度执行程序linux系统移植步骤,发觉此次libQt5DBus.so.5的库找不到,而且qt打包时我们有拿过来了,只是名子不同,我们进行软链接即可,执行命令:ln-slibQt5DBus.so.5.12.0libQt5DBus.so.5

之后再度执行,发觉可以运行啦

上述的命令汇总为如下脚本命令

#!/usr/bin/sh
export QT_DEBUG_PLUGINS=1
export LD_LIBRARY_PATH='/home/valwell/tmp/fabu-release':$LD_LIBRARY_PATH
ln -s libQt5XcbQpa.so.5.12.0 libQt5XcbQpa.so.5
ln -s libQt5DBus.so.5.12.0  libQt5DBus.so.5
./UpdateClient

由于使用export导出的是临时的,所以只是局限于当前命令窗口,关掉后就失效了,写上述的脚本后,上次直接运行脚本就行了。大家在调试运行时,可能少的不止libQt5XcbQpa.so.5和libQt5XcbQpa.so.5这两个库,这时就须要依照这个思路进行找寻问题的症结了。少啥补啥就行了。通常少的东西,在开发环境的机子上肯定有!!!

总结:

为何写这么多呢?虽然这是个思路过程吧,linux下好多时侯库是链接不上的,这时侯就须要我们思索了,在发布移植时,由于可能另一台笔记本没有开发环境,就须要我们的配置了。如同一个开发团队,接了一个外包,她们已然分工开发好了,在她们的笔记本运行流程。并且,给顾客时,由于顾客是没有开发环境的,总不能给顾客安装个开发环境吧?这是不现实的,所以须要在交付给顾客前,要在另一台没有开发环境的机器或则虚拟机上调试,直至运行没有问题。

好了,上班上班!!

2022-2-24更新补充:嫌弃里面的打包太麻烦了,还可能出现好多雷区,来看这个我最新写的文章,能够防止各类雷,脚本一键式打包

关于Qt程序打包后运行库依赖的常见问题剖析及解决方式_只是个~小不点的博客-CSDN博客

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 运行命令
最后更新:2023年4月6日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
用集群技术构建网络服务器的发展趋势提出了 搜狗输入法forlinux版本安装指南: Linux中常用的4种虚拟化方法以及它们相应的优缺点 如何在linux下安装搜狗输入法后怎么用的那些神秘传说? Linux虚拟服务器LVS自动化运维方法及运维系统介绍 时间戳和时区1Unix(/)接收的两个推测 安装Linux和Windows双系统的硬盘分区是什么意思? linux怎么安装输入法Linux系统可以通过以下步骤步骤安装 (Unix)Unix时间戳转换公式及Unix操作成时间公式 Linux计算机卸载文件系统的使用实例分析 史上最全的Linux系统设备文件系统类型汇总! AzureKubernetes启用自动节点映像升级解决方法升级 不懂这些硬盘分区的知识,怎么能够安装操作系统 Linux中进程间通信有多少方式,分别是什么? 系统备份和恢复:ISO文件的一些常见用途和用途 (扣丁学堂)进程通信的应用场景数据传输详解 Windows操作系统建立兼容Unix/Linux命令的命令行工具 小节知识架构学习目标了解掌握掌握了解早期进程间通信机制的原理 Unix系统下的安装在Unix平台下安装PHP的方法 Linux进程间通信(IPC)有几种方式
Linux桌面发行版的分类、如何选择?TinyCore3.1——世界上最小的Linux桌面发行版Linux生态系统开发工具总结环境开发的工具介绍Linux占用磁盘空间最小.lin的可定制性很高为什么有这么多Linux发行版,我们需要所有操作系统?kxJ红软基地软件说明(2014年10月更新)SSH安全加固的文字,网友点评通过密钥登录更加安全Linuxcentos7虚拟机装找Linux镜像找的!找了好多都是度盘!unix系统界面 没有最好的Linux发行版是什么样的?Part1linux修改文件夹权限:以上方法只能改变单个文件fedora 禁止root登录 如何在Linux上建立SSH安全连接的方法?安全快速实例学习:修改某个目录下的所有文件的权限bin是什么格式的文件怎么打开bin文件打开方法?科林·沃森:Ubuntu默认是关闭root帐户的,这样做(知识点)chmod系统控制用户对文件权限的命令如何在UbuntuLinux中启用和禁用root用户登录系统?Linux系统chmod命令使用数字修改文件权限的方式有哪些?关于Ubuntu修改密码及密码复杂度策略设置的文章!Ubuntu本地提权漏洞CVE-2017-16995程序员不输入密码进入Linux系统,孩子们永远不知道下一个bug
RedHatEnterprise命令删除空文件夹命令教程操作环境介绍 linux系统关机指令 1.shutdown 巨幕智屏怎么看电视直播给电视成功安装当贝市场 Linux、apache、mysql、php合起来的简称本教程 版本号的信息有以下几个:内核版本号编译器发行系统版本号 linux中常用的用户管理命令:1groups?列出当前用户所属 Linux常用命令大全(标记为红色的位必须掌握!) Linux系统安装XWindows图形界面的特殊场景及安装方法 2.怎么办下的打包发布步骤:先说 【Linux基础知识】Linux系统的启动流程经历(二) U盘安装linux系统解决方法:确保Linux下采用dd命令 虚拟机串口连接失败问题小哥的Linux系统解决方法 图解linuxlinux内核结构框图对内核框图有个总体的把握 重新启动RedHatLinuxrelease命令注销系统的logout命令-上海怡健医学 关于Linux学习使用计算机必然会接触操作系统的分析实例分享 MicrosoftLinux内核将作为Windows10的一部分包括在内包括 ln命令:创建硬链接,当使用-s时创建符号链接 RedHat查看内核版本和厂商版本1.查看版本的命令 linux解压zip文件命令 ,Linuxbzip2命令的使用主要介绍-上海怡健医学 共享一个页表和一块物理内存的区别与联系导航
标签聚合
虚拟机 linux系统 文件目录 命令模式 命令 linux服务器 电脑 软件 linux脚本 sudo
书籍
课程
技术群
技术干货大合集↓
  • 2023年5月 / 86篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.