准备工作

  1. 下载linuxdeployqt
  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文件就行了

遇到的问题

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

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

    在这里插入图片描述

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

    在这里插入图片描述

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

  1. 本地多qt版本
  • 本地或可能有多个版本的qt 它们安装的库可能不是对应的 所以打包的时候可以指定qt的版本
 linuxdeployqt hmi -appimage -qmake=/usr/lib/qt5/bin/qmake

配置启动

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

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐