- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
之前在ubuntu上发布qt程序相对还好,使用脚本,在麒麟上发布的时候,使用脚本就不太兼容,同时为了实现直接点击应用可以启动应用的效果,使用linuxdeployqt发布qt程序。 本篇文章依然是继续发布主题,有centOS的qt项目需要发布,系统是CentOS8.2,同时也做了CentOS7.5的发布(CentOS7.5整体差上不差,就是需要先yum卸载自带的cmake,然后源码安装cmake3.4) 。
《Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败) 》:在ubuntu上发布程序遇到xcb问题,当我们将其部署到另外同样环境但是未装qt的环境下,运行起来一部分是xcb文件,有一部分解决后可以正常运行启用,另一部分直接段错误,程序宕掉(提示,段核心错误,已转存什么的),使用linuxdeployqt能解决此问题,也就是使用脚本打包的升级版本。 《麒麟系统开发笔记(八):在国产麒麟系统上使用linuxdeployqt发布qt程序》:这是在麒麟上使用linuxdeployqt打包的全流程。 《Qt实用技巧:在CentOS上使用linuxdeployqt打包发布qt程序》:这是在CentOS界面服务器上linuxdeployq打包的流程.
Linux部署工具linuxdeployqt将应用程序作为输入,并通过将应用程序使用的资源(如库、图形和插件)复制到一个包中使其自包含。结果包可以作为AppDir或AppImage分发给用户,也可以放入交叉分发包中。它可以作为构建过程的一部分,在CMake、qmake和make等系统中部署用C、C++和其他编译语言编写的应用程序。当用于基于Qt的应用程序时,它可以绑定运行应用程序所需的Qt的特定最小子集.
gitcode下载: https://gitcode.net/mirrors/probonopd/linuxdeployqt 百度网盘下载: https://pan.baidu.com/s/1mS7bWqg8UQkfTx-5SNVGuw?pwd=1234 。
找到main.cpp源码,将这一段(在192行左右)注释掉:
cd linuxdeployqt-master gedit tools/linuxdeployqt/main.cpp
centOS安装软件先切换至root:
su root
CMake是自带了(注意:本篇是centOS8.2,而在centOS7.5上,因为cmake自带为cmake2.8,后续论证了,是需要卸载cmake2.8,源码装cmake3.20也编译错误,然后卸载又源码安装了cmake3.4,在centOS7.5上后续才顺利make编译linuxdeployqt) 。
使用到了cmake-gui 。
yum
install cmake-gui.x86_64
因为yum没有,也没有找到安装方法,只能从源码编译安装了.
下载地址; https://nixos.org/releases/patchelf/patchelf-0.9/patchelf-0.9.tar.gz 。
wget https://nixos.org/releases/patchelf/patchelf-0.9/patchelf-0.9.tar.gz
解压:
tar xvf patchelf-0.9.tar.gz
进入文件夹,配置configure:
cd patchelf-0.9 ./configure
编译make:
安装make install: 测试:
cmake CMakeList.txt
。
因为安装了git与这个工程可能不对,我们直接使用源码修改大法,直接定位到代码给删掉:
gedit CMakeLists.txt
第7行至63行删除: 直接删掉目录下的缓存文件:CMakeCache.txt,然后继续:
rm CMakeCache.txt
系统qt5: 而我们使用了另外安装的qt5,所以依赖需要引入我们自己安装的qt5上。 使用cmake-gui来指定依赖的qt:
cmake-gui
选择对应的路径,然后使用默认unix makefile方式配置: 点击“Configure”,选择“Unix Makefiles”方式: 这里默认使用了系统的:
虽然系统的和我们安装的是一样的还是为了不出错需要配置以下:
再配置一次:
切入build目录,并且使用make命令即可:
cd build make
没有make install这个,手动移动到/usr/local/bin 。
cp linuxdeployqt /usr/local/bin/
新建一个工程 。
然后找个空目录:
copy程序:
qmake要引入$PATH中(注意:不指定则当前使用的是系统的qmake): 为了不影响系统,使用脚本引入,每次打包使用之前使用source env.sh引入即可.
#!/bin/sh QT_DIR =/home/yang/Qt/5.15.2/gcc_64 export PATH = ${QT_DIR}/bin: $PATH export LIB_PATH = ${QT_DIR}/lib: $LIB_PATH export PLUGIN_PATH = ${QT_DIR}/plugins: $PLUGIN_PATH export QML2_PATH = ${QT_DIR}/qml: $QML2_PATH export LD_LIBRARY_PATH = ${QT_DIR}/lib: $LD_LIBRARY_PATH echo $PATH echo $LIB_PATH echo $PLUGIN_PATH echo $QML2_PATH echo $LD_LIBRARY_PATH
继续打包:
// 打包命令(用这条还是非常可能缺库,如libxcb.icccm.so.4各种系统库)
// linuxdeployqt 可执行程序 -verbose2(不要用这条了,之前ubuntu和麒麟都没出现该问题,但是centOS8.2出现了却库的问题)
// 完整打包命令(完全带进去了)
linuxdeployqt 可执行程序 -appimage
发现已经打包成功,直接点击既可以运行了:
为了进一步验证,我们弄一个全新的CentOS8.2做测试,裸镜像:
之前的app3打包拷贝进去:
为了进一步验证,我们弄一个全新的CentOS8.2做测试,裸镜像: 之前的app打包拷贝进去:
跑不起来:
。
毫无疑问,应该xcb依赖的一些库没有导入进来:
export QT_DEBUG_PLUGINS = 1
使用linuxdeployqt的时候,使用-appimage 。
最后此篇关于Qt实用技巧:在CentOS上使用linuxdeployqt打包发布qt程序的文章就讲到这里了,如果你想了解更多关于Qt实用技巧:在CentOS上使用linuxdeployqt打包发布qt程序的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
💡 作者: 韩信子 @ ShowMeAI 📘 机器学习实战系列 : https://www.showmeai.tech/tutorials/41 📘
网络上关于SEO的文章实在是太多了,让很多新手站长都无法判别哪些是有用的,哪些是没有用的。尤其是外链建设这一块,如果被误导了,对网站将是沉重的打击。这里我整理一下比较有用的五种链接建设的方法,供大家
项目中经常有对时间进行处理的需求,下面是一些常用的操作整理,方便以后再次使用以及做相关复习。 1.字符串转换为日期 ?
有时候你会看到很Cool的Python代码,你惊讶于它的简洁,它的优雅,你不由自主地赞叹:竟然还能这样写。其实,这些优雅的代码都要归功于Python的特性,只要你能掌握这些Pythonic的技巧,你
曾经SEO流传一句老话,内容为王外链为皇,而到现在,这句话依然作为SEO优化的基础,但很多新手SEO朋友们往往在原创内容上碰壁,在2016年自媒体模式冲击下,外链的作用越来越弱,而导致了很多SEOe
本文讲述了PHP常见错误提示含义解释。分享给大家供大家参考,具体如下: 在学习PHP的时候,经常遇到各种错误提示,今天看到这错误提示和解释感觉挺好,现转过来,供我们学习。呵呵。。。。。 1、No
在现代 v8 Javascript 中,String.prototype.slice 的算法复杂度是多少? 明确地说,我正在寻找真实世界的实用数据或经验法则。 快速测试 我试图通过在最新的 Chrom
我上过几门关于 Java 的大学类(class)。然而,这些类缺少的是一些实用的 Java 方法——或者说,作为一个整体的编程。只有在企业中才能学到的东西。 但是,由于不允许我在工作场所使用 Java
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
使用新的替代工具来改进旧的命令行工具。 在Linux/Unix系统的日常使用中,我们需要使用很多命令行工具来完成工作,以及理解和管理我们的系统,例如使用du来监视磁盘利用率、top来显示系统资
灵感来自 Haskell API Search Engine 我开始想知道在 Scala 库中查找事物名称的正确方法是什么。 例如,假设我需要一些字符串变电站,例如搜索和替换。 StringOps 没
所以我已经阅读了很多这方面的内容,所以请知道我知道像 0.6 这样的数字不能绝对准确地表示为 Java double - 但我知道有一个 double 版本表示数字 0.6 足够接近,以至于在对该数字
我有一个 Django 应用程序,可以获取近乎实时的数据(推文和投票),尽管更新平均每分钟或两分钟发生一次。但是,我们希望通过在数据出现时立即更新站点和 api 结果来显示数据。 我们可能会在这个站点
我需要一个 double[],通过跨步 y 返回一个列表,将其分成 x 元素组。非常基本...一个循环和/或一些 linq 以及所有设置。然而,我并没有在扩展方法上花费太多时间,这看起来是一些练习的不
想要了解变量在 javascript 中如何在分配不同类型的值时工作。 类型 1:字符串 bool 值 类型 2:数组对象函数正则表达式日期 目前引用了两本引起混淆的书。 let mood = "li
我想在 iPad 中打开包含宏的 xls 文件。该宏与安全相关,并且已启用 xls 文件。如果我尝试使用 UIWebview 打开该文件,则会显示加密数据错误。如果 Excel 文件中禁用了宏,那么它
我发现自己在一个包含 Lua 的 C 项目中需要一个哈希表容器。我想知道是否可以将 Lua 中的哈希表用作通用容器。我查看了 ltable.h,所有函数都需要一个 Lua 状态并且似乎与 Lua 环境
尝试使用 Meteor 1.6 运行 practicalmeteor:mocha 时,我在终端上收到以下错误 Uncaught TypeError: MochaRunner.runEverywhere
我正在读《实用Django项目》这本书。这是一本好书。不过我有几个问题: 第71页,有以下代码: from django.conf.urls.defaults import * from dj
第 183 和 184 页有以下代码: def edit_snippet(request, snippet_id): snippet = get_object_or_404(Snippet,
我是一名优秀的程序员,十分优秀!