Ubuntu18.04平台下Qt开发程序打包的一些问题总结
目录
前言
一、在Ubuntu18.04开发环境下打包有两种方式
1、利用linuxdeployqt软件进行打包
2、利用编写shell脚本的方式进行打包
二、详细介绍shell脚本打包的方式
1、新建一个空的文件夹
2、准备脚本copylib.sh
3、准备脚本xxxx.sh。
4、给上述两个脚本添加可执行权限
5、生成CardReaderTester文件
6、添加程序依赖库
7、添加Qt相关依赖库(1)将copylib.sh复制到Qt5安装目录的platforms文件夹当中。
8、软件运行切换到package文件夹下,在当前文件夹下执行./CardReaderTester.sh即可运行软件。
前言
主要给Qt开发的程序打包,将程序可以房子啊没有安装Qt开发环境的电脑运行。
一、在Ubuntu18.04开发环境下打包有两种方式
1、利用linuxdeployqt软件进行打包
但是网上说这种方法好像存在弊端,并没有尝试,故不做详细介绍。
弊端大概就是:不过由于Ubuntu18.04操作系统版本太高,在Ubuntu18.04上需要重新编译linuxdeployqt软件。重新编译的过程需要注释部分不兼容的源码。由于该方式经测试打包依旧无法运行。
2、利用编写shell脚本的方式进行打包
这种方法也在的问题:有些依赖库并不能自动包含进来,只能先用脚本打包,再把缺失的库手动拉进来。
二、详细介绍shell脚本打包的方式
1、新建一个空的文件夹
用于存放程序和动态链接库。如“package”文件夹;
2、准备脚本copylib.sh
#!/bin/bash
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
docp "$Variable" $LibDir
done
3、准备脚本xxxx.sh。
(xxxx.sh表示该脚本名称必须和程序名一致。如:本项目的可执行文件为uidemo01,命名该脚本为CardReaderTester.sh)
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
VLC_PLUGIN=$PWD/plugins
echo $VLC_PLUGIN
LD_LIBRARY_PATH=$dirname
export VLC_PLUGIN_PATH=$VLC_PLUGIN
echo $LD_LIBRARY_PATH
export LD_LIBRARY_PATH
$dirname/$appname "$@"
注意:复制粘贴这些脚本内容时候,有可能会出现格式的问题,但是提示什么错误再修改就好。
4、给上述两个脚本添加可执行权限
在shell里面执行如下两行命令:
sudo chmod 777 copylib.sh
sudo chmod 777 CardReaderTester.sh
5、生成CardReaderTester文件
将qt creator切换为release模式,在编译文件夹下生成CardReaderTester文件。
6、添加程序依赖库
(1)首先将该文件复制到package文件夹下。

(2)在该文件夹下执行./copylib.sh CardReaderTester命令:
./copylib.sh CardReaderTester
(3)执行完后package目录中会生成lib文件夹:

(4)将lib文件夹下面的库拷贝到package文件夹下面:

(5)至此完成了添加程序依赖库的部分;
7、添加Qt相关依赖库
(1)将copylib.sh复制到Qt5安装目录的platforms文件夹当中。

(2)在当前文件夹下执行./copylib.sh libqxcb.so命令。
./copylib.sh libqxcb.so
// 执行完这句指令,也会多生成一个lib文件夹
(3)将lib目录下的库复制到package文件夹下,部分库可能重复,点击“替换”即可。
(4)接下来返回上一级,将platforms整个文件夹拷贝到package文件夹下。此时的目录结构如下。

8、软件运行
切换到package文件夹下,在当前文件夹下执行./CardReaderTester.sh即可运行软件。
注意:要是运行不成功,会显示缺少哪些库。

我的项目主要是QWebsoket以及QNetWork相关的库不能正确包含进来,我又从qt的库中把对应的库拷贝过来,才成功了。
相关文章:
Ubuntu18.04平台下Qt开发程序打包的一些问题总结
目录 前言 一、在Ubuntu18.04开发环境下打包有两种方式 1、利用linuxdeployqt软件进行打包 2、利用编写shell脚本的方式进行打包 二、详细介绍shell脚本打包的方式 1、新建一个空的文件夹 2、准备脚本copylib.sh 3、准备脚本xxxx.sh。 4、给上述两个脚本添加可执行权限…...
定时器setTimeout()、setInterval()详解
定时器是JavaScript中常用的一种功能,它可以通过代码控制在指定的时间间隔或者时间点执行特定的代码。常见的定时器有setTimeout()和setInterval()两种。 setTimeout() setTimeout()函数可以让代码在指定的时间后执行一次,其语法如下: setT…...
测试端口开通的几种方法
一、前言 在平时使用中,当测试服务器端口是否开通时,我们首先想到的是Telnet,如下: [rootk8s-master01 ~]# telnet 192.168.1.33 6443 Trying 192.168.1.33... Connected to 192.168.1.33. Escape character is ^].但是实际生产…...
Linux每日智囊
每日分享三个Linux命令,悄悄培养读者的Linux技能。 rename 作用 批量修改文件名称 rename命令能够基于正则表达式对文件名进行批量修改 语法 rename [option] expression replacement file expression:文件命中需要替换的字符串 replacement:将文件名中指定…...
Word添加附件(附件图标被挡住的问题)
本文主要是为了记录一下自己使用word添加附件的时候遇到的一个坑,就是添加了附件,附件图标没有展示的问题。 选择 插入——对象,然后点击由文件创建然后再点击浏览本地电脑中的文件,选择需要添加的文件,当然也可以选择…...
【数据结构】单链表 | 详细讲解
线性表顺序存储结构的优缺点 顺序表优点 无须为了表示中间的元素之间的逻辑关系而增加额外的存储空间;因为以数组形式存储,可以快速地存取表中任一位置的元素。 顺序表缺点 插入和删除操作需要移动大量元素,时间复杂度为O(N);…...
每日一题:编写程序,使程序分别输出两个整数的加减乘除运算结果
文章目录 每日一题一、编写程序,使程序分别输出两个整数的加减乘除运算结果以下是一个使用 Java 编写的程序,可以输出两个整数的加减乘除运算结果:以下是一个简单的 Python 程序,可以计算两个整数的加减乘除运算结果: …...
alpine linux如何指定软件包安装源
永久修改apk下载源 vi etc/apk/repositories替换成阿里源 http://mirrors.aliyun.com/alpine/v3.8/main/ http://mirrors.aliyun.com/alpine/v3.8/community/更新源 apk update临时修改下载源 直接在软件安装后面 添加源地址 apk add php5.6 --repository http://nl.alpine…...
ubuntu设置脚本开机自启动
rc-local.service flexmitd1:~$ cd /lib/systemd/system/ flexmitd1:/lib/systemd/system$ ls |grep rc-local.service rc-local.service rc-local.service.d flexmitd1:/lib/systemd/system$ pwd /lib/systemd/system flexmitd1:/lib/systemd/system$确保有rc-local.service文…...
cobol-简介
cobol学习笔记 cobol概述 COBOL是一门高级语言。我们必须了解COBOL的工作方式。计算机只能理解机器代码,0和1的二进制流。 COBOL代码必须使用编译器转换成机器代码。通过编译器运行程序源码。编译器首先检查是否有任何语法错误,然后将其转换为机器语言。…...
使用 JMeter 分布式性能测试
作为一个纯 JAVA 的GUI应用,JMeter 对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过,JMeter 也可以像 Loa…...
【工具流】WSL2安装
一些废话 最近看到了PKU出品的cs自学指南,想要跟着里面的自学路径学国外的优质课程,无奈大多数pre教程里面都是直接Linux环境下的操作,并且我在CSwiki看到了那个熟悉的上学期学了一点的missing-semester课。 上学期自学missing-semester的时候…...
OpenGL获取GPU信息
glGetString 获取厂家信息 const GLubyte* info glGetString(GL_VENDOR); printf("GL_VENDOR:%s\n", info);info glGetString(GL_VERSION); printf("GL_VERSION:%s\n", info);info glGetString(GL_RENDERER); printf("GL_RENDER:%s\n", inf…...
毫米波雷达模块的目标检测与跟踪
毫米波雷达技术在目标检测与跟踪方面具有独特的优势,其高精度、不受光照影响等特点使其在汽车、军事、工业等领域广泛应用。本文深入探讨毫米波雷达模块在目标检测与跟踪方面的研究现状、关键技术以及未来发展方向。 随着科技的不断进步,毫米波雷达技术在…...
Linux 下 使用 Ekho 进行TTS文本转语音
官网 http://www.eguidedog.net/cn/index.phpEkho(余音)是一个免费、开源的中文语音合成软件。支持普通话、粤语。支持Linux、Windows和Android平台。 资源:https://download.csdn.net/download/weixin_44618297/88529881 参考:…...
WiFi protocol 详解
这里推荐两个 知乎上的 专题 讲的不错 802.11协议细读 - 知乎 Wi-Fi研习者 - 知乎...
llm模拟基本逻辑门
llm模拟基本逻辑门 全部代码代码解析全部代码 import paddle import numpy as np from tqdm import tqdmclass FeedFroward(paddle.nn.Layer):def __init__(self, hidden_dim)...
Linux学习第42天:Linux RS232/485/GPS 驱动实验:天外来客
Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 Linux的学习笔记今天更新到了第42天。鉴于国往笔记内容整理中出现的问题,我尽量按照平时学习时笔记的要求进行优化。尽量不再大段大段的贴代码。而是…...
CSDN每日一题学习训练——Python版(输入起始和结束的正整数,求其两个正整数之间的偶数和、两数相加)
版本说明 当前版本号[20231115]。 版本修改说明20231115初版 目录 文章目录 版本说明目录输入起始和结束的正整数,求其两个正整数之间的偶数和。题目解题思路代码思路参考代码 两数相加题目解题思路代码思路参考代码 输入起始和结束的正整数,求其两个…...
【论文】基于Hadoop的铁路货运大数据平台设计与应用
点我完整下载:基于Hadoop的铁路货运大数据平台设计与应用.docx 基于Hadoop的铁路货运大数据平台设计与应用 Design and Application of Railway Freight Big Data Platform based on Hadoop 目录 目录 2 摘要 3 关键词 4 第一章 绪论 4 1.1 研究背景 4 1.2 研究目的…...
杨立昆新模型杀疯了,1500万参数单GPU就能碾压大厂?
就在前几天,AI教父、图灵奖得主杨立昆刚发了个新模型,名叫LeWorldModel,论文一发出,整个圈子瞬间炸锅。说出来你们可能都不信——这货只有1500万参数,单块GPU几个小时就能训完,随便一个研究者都拉起来跑一遍…...
避坑指南:Windows系统下WampServer2.2e与MySQL5.5.24的完美兼容配置
避坑指南:Windows系统下WampServer2.2e与MySQL5.5.24的完美兼容配置 在本地开发环境中,WampServer因其便捷的一键式部署深受开发者喜爱。但当系统已存在其他MySQL服务时,端口冲突问题往往让新手束手无策。本文将深入解决WampServer2.2e与既有…...
嵌入式开发者的效率利器:在VS Code里实时看到MISRA-C违规提示(含头文件路径配置避坑)
嵌入式开发实战:用VS Code打造MISRA-C实时检查工作流 每次保存代码后才发现MISRA-C违规有多痛苦?想象一下这样的场景:你正在编写一段关键的车载控制逻辑,反复调试后终于通过了编译,却在提交前的静态检查中被揪出二十多…...
从MATLAB/Python代码实现反推Newmark-β法:理解线性加速度假设如何变成迭代算法
从代码实现反推Newmark-β法:线性加速度假设的工程实践指南 在结构动力学分析中,地震响应、风荷载等时程分析问题常需要求解二阶微分方程。Newmark-β法作为经典数值解法,通过线性加速度假设将连续问题离散化。但教科书往往止步于公式推导&am…...
细致配置Doctrine,专注于指定前缀表的迁移
在使用Symfony和Doctrine进行项目开发时,如何优雅地处理数据库迁移是一个常见的问题。本文将详细探讨如何配置Doctrine,使其在生成迁移文件时仅关注特定前缀的表(如pp_前缀的表),从而避免迁移文件中包含不必要的表。 背景介绍 假设你有一个Symfony项目,该项目中数据库已…...
动态间隙精准诊断:NHJX-13 型底盘间隙仪机动车底盘安全检测全方案
动态间隙精准诊断:NHJX-13 型底盘间隙仪机动车底盘安全检测全方案在机动车安全环保检测体系中,底盘间隙仪是诊断车辆转向机构、悬挂系统、传动部件间隙状况的核心设备,尤其对大中型客车、重中型货车等营运车辆,其性能直接决定底盘…...
如何快速访问AO3镜像站:新手必看的5个实用技巧
如何快速访问AO3镜像站:新手必看的5个实用技巧 【免费下载链接】AO3-Mirror-Site 项目地址: https://gitcode.com/gh_mirrors/ao/AO3-Mirror-Site Archive of Our Own(AO3)是全球最大的同人创作平台,但部分地区访问受限。…...
Llama-3.2V-11B-cot入门必看:Streamlit会话状态管理保障多用户隔离
Llama-3.2V-11B-cot入门必看:Streamlit会话状态管理保障多用户隔离 1. 项目概述 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具,专为双卡4090环境深度优化。该工具通过Streamlit框架构建了宽屏友好的交互界面…...
VideoSrt:智能字幕生成工具重新定义视频创作效率
VideoSrt:智能字幕生成工具重新定义视频创作效率 【免费下载链接】video-srt-windows 这是一个可以识别视频语音自动生成字幕SRT文件的开源 Windows-GUI 软件工具。 项目地址: https://gitcode.com/gh_mirrors/vi/video-srt-windows VideoSrt是一款基于Golan…...
使用AIVideo实现LaTeX学术报告自动转视频教程
使用AIVideo实现LaTeX学术报告自动转视频教程 1. 引言 作为一名科研工作者,你是否曾经为了准备学术会议的视频报告而头疼?传统的视频制作需要录制、剪辑、配音等多个繁琐步骤,耗时耗力。现在,通过AIVideo这个强大的AI视频创作平…...
