当前位置: 首页 > article >正文

ubuntu 使用linuxdeployqt打包Qt程序

文章目录

      • 准备工作
      • 打包
      • 遇到的问题
      • 配置启动

准备工作

  1. 下载linuxdeployqt
  • 下载地址,下载这个xxx.Appiamge文件即可
    在这里插入图片描述
  1. 配置linuxdeployqt

    • 将下载得到的xxx.Appiamge,移动到/usr/local/bin目录下,这样,我们就可以在其他目录访问了

    • 为了方便使用我们可以将其改一下名字并加上权限

      mv linuxdeployqt-continuous-x86_64.AppImage linuxdeployqt
      mv linuxdeployqt /usr/local/bin
      

    • 输入查看版本没有问题就可以正常使用了,
      在这里插入图片描述

  2. 获取可执行文件

  • 准备好程序的realse环境下的可执行文件,使用qtcreator或者vsode的IDE都行,找到build目录下的可执行文件
    在这里插入图片描述

  • 将这个执行文件拷贝到一个空文件夹下,并进入到这个文件夹

    在这里插入图片描述

打包

  • 完成上述步骤后输入以下指令进行程序打包,中间的为你的可执行文件名

    linuxdeployqt hmi -appimage
    
  • 执行完成后
    在这里插入图片描述

  • 这样其实就可以了,但是我们可以看到它有俩个error,其实这并有关系 一个是没有 .desktop 文件,这个是linuxdeployqt的一个配置,后续可以再次编辑,一个是没有设置图标也是后续可再次编辑的。

  • 打包后整个目录如下显示

    在这里插入图片描述

  • 我们执行AppRun文件就行了

遇到的问题

  • 因为linuxdeployqt将在内部使用ldd命令,来确定从何处将库复制到包中。ldd命令本身只能查找隐式加载的so,故若程序中代码使用显式加载的so,它是找不到的,需要自己手动的加入。(这个和你写的cmakelist或者pro文件的关系很大)

  • 比如我现在运行程序直接报错了,因为我程序里面使用了glog,所以很明显的看出是少了vlc的相关库

    在这里插入图片描述

  • 这时候我们可以先使用ldd指令查看原本的可执行文件链接了哪些库(找到库的路径复制进来)

    在这里插入图片描述

  • 找到这个库的 如何复制到lib文件夹下,至此程序打包完成,应可正常启动。

配置启动

  • 新建一个xxx.desktop文件,内容如下
[Desktop Entry]
Version=1.0
Terminal=false
Type=Application
Name=clash
Exec=xxx/AppRun  #AppRun路径
Icon=xxx/default.png #图标路径
  • 将该文件拷贝到.local/share/applications
  • 这样你就可以直接在应用程序里面中找到并双击启动了

http://www.kler.cn/a/508650.html

相关文章:

  • IoTDB 数据类型相关问题
  • 【C++基础】enum,union,uint8_t,static
  • linux下的NFS和FTP部署
  • 复用类(4):final关键字、初始化与类的加载
  • 【k8s面试题2025】3、练气中期
  • 虚拟拨号技术(GOIP|VOIP)【基于IP的语音传输转换给不法分子的境外来电披上一层外衣】: Voice over Internet Protocol
  • salesforce lightning component和lightning web component的异同
  • ZNS SSD垃圾回收优化方案解读-2
  • STM32特殊功能引脚详解文章·STM32特殊功能引脚能当作GPIO使用嘛详解!!!
  • Linux第二课:LinuxC高级 学习记录day04
  • vue3 el-table 根据id合并指定列单元格
  • Qt模块概览(核心模块、GUI模块等)
  • LSA更新、撤销
  • 【CompletableFuture实战】
  • Git 安装 操作 命令 远程仓库 多人协作
  • Zotero 插件Better Notes导入新的笔记模板
  • RV1126+FFMPEG推流项目(6)视频码率及其码率控制方式
  • 【区间DP】力扣3040. 相同分数的最大操作数目 II
  • 被动扫描和主动扫描的区别
  • OSPF(1):基础知识与数据包、状态机、工作过程
  • springboot项目架构
  • 【开源免费】基于Vue和SpringBoot的夕阳红公寓管理系统(附论文)
  • 在VMwareFusion中使用Ubuntu
  • RabbitMQ--发送方确认及消息重试
  • 数仓建模(三)建模三步走:需求分析、模型设计与数据加载
  • (二)异步处理机制(Asynchronous Processing)