zoukankan      html  css  js  c++  java
  • 在Linux下使用linuxdeployqt发布Qt程序

    一、简介

    linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中。


    二、安装linuxdeployqt

    github直接下载编译好的 linuxdeployqt-x86_64.AppImage 应用程序文件。
    image.png
    下载好之后,将其改名为linuxdeployqt,并chmod +x,然后复制到 /usr/local/bin/。然后命令行输入 linuxdelpoyqt –version,查看是否安装成功,若输出版本信息表示安装成功。

    $ chmod +x linuxdeployqt-x86_64.AppImage
    $ mv linuxdeployqt-x86_64.AppImage linuxdeployqt
    $ mv linuxdeployqt /usr/local/bin
    $ linuxdelpoyqt --version
    #输出的版本信息
    linuxdeployqt 5 (commit 37631e5), build 631 built on 2019-01-25 22:47:58 UTC
    

    三、配置 qt 的环境变量

    终端输入vim ~/.bashrc命令,修改 .bashrc 文件,在文件末尾追加以下内容,其中/home/zlkj/technology/5.9.7是我的Qt安装路径,大家要用自己的路径代替:

    #add QT ENV
    export PATH=/home/zlkj/technology/5.9.7/gcc_64/bin:$PATH
    export LD_LIBRARY_PATH=/home/zlkj/technology/5.9.7/gcc_64/lib:$LD_LIBRARY_PATH
    export QT_PLUGIN_PATH=/home/zlkj/technology/5.9.7/gcc_64/plugins:$QT_PLUGIN_PATH
    export QML2_IMPORT_PATH=/home/zlkj/technology/5.9.7/gcc_64/qml:$QML2_IMPORT_PATH
    

    最后要source一下使 ~/.bashrc 这个shell文件立即生效,而不必注销并重新登录。

    $ source ~/.bashrc
    

    四、打包应用程序

    (1)运行Qt生成release版本的可执行文件,勾选了“shadow build”,所以示例用的是build-cleanRobot-Desktop_Qt_5_9_7_GCC_64bit-Release文件夹下的cleanRobot可执行文件;
    (2)创建一个文件夹,名称最好是用可执行文件的名称,然后将cleanRobot可执行文件复制到此文件夹下;
    (3)使用 linuxdeployqt 进行打包,一定要加上-appimage选项,命令如下:

    $ linuxdeployqt cleanRobot -appimage
    

    执行上面命令出现提示信息,不用管,只是创建了一个需要你自己编辑的desktop文件:

    ERROR: Desktop file missing, creating a default one (you will probably want to edit it)
    

    到这一步,就把可执行文件的动态库等依赖文件都复制到该文件夹中了。


    五、编写linux桌面图标启动(可选步骤)

    修改qt 目录下的desktop文件。可以按照ubuntu 官方提示修改。
    ubuntu desktop文件使用

    #-- 全局安装(所有用户可用),将xxx.desktop 复制到/usr/share/applications  
    #-- 当前用户可用, 将xxx.desktop 复制到 ~/.local/share/applications 目录即可
    #--appName.desktop
    [Desktop Entry]
    Version=1.0 #app的版本
    Name=cleanRobot #app的名字
    Comment= this app use for xxx #说明信息 
    Exec=/path/to/your/QtApp/cleanRobot #app的执行路径,绝对路径
    Icon=/path/to/your/app_icon/cleanRobot.ico #icon 路径,绝对路径
    Terminal=false #是否在终端启动,效果自己试一下就知道了
    Type=Application
    Categories=Utility;Application;
    

    六、编写开机脚本 runApp.sh

    执行以下命令,创建runApp.sh:

    $ vim runApp.sh
    

    写入以下内容:

    #!/bin/bash
    export LD_LIBRARY_PATH=/app/lib:$LD_LIBRARY_PATH
    export QT_PLUGIN_PATH=/app/plugins:$QT_PLUGIN_PATH
    export QML2_IMPORT_PATH=/app/qml:$QML2_IMPORT_PATH
    ./cleanRobot
    

    再给运行开机脚本runApp.sh添加可执行权限:

    $ chmod +x runApp.sh
    

    此时运行开机脚本,则可启动程序。其实到这一步就可以发布了,压缩成一个压缩包发布即可,可如果想继续打包成deb包,可以看下一步。

    七、打包成deb包

    deb是Debian Linux的软件包格式。一般来说是需要通过编译源码然后制作deb包,而这里是将前面生成的发布文件夹打包成deb包。步骤如下:

    首先建立一个工作目录,比如在主文件夹下建立clean目录:

    $ cd ~
    $ mkdir clean
    $ cd clean
    

    因为安装软件包的时候默认是将文件释放到根目录下,所以我们这里设定安装路径为/usr/src:

    $ mkdir -p usr/src #设定安装路径为/usr/src
    $ cp -a ~/cleanRobot usr/src
    $ mkdir DEBIAN
    

    同时我们还需建立一个DEBIAN目录,用如下的方法在DEBIAN目录下创建一个control文件,并加入以下内容:

    package: cleanRobot 
    Version: 1.0.1
    Section: utils
    Priority: optional
    Architecture: i386
    Depends:
    Installed-Size: 512
    Maintainer: fengMisaka
    Description: cleanRobot-deb
    

    然后就可以使用dpkg命令构建deb包了,生成的包在/home目录下:

    $ dpkg -b . /home/cleanRobot_1.0.1_i386.deb
    

    安装deb包命令如下:

    $ sudo dpkg -i soft_1.0.1_i386.deb 
    

    就可以看到/usr/src多出了个cleanRobot目录,至此大功告成,运行开机脚本即可。


    八、扩展

    1、关于qt.conf

    这个文件指定了qt 程序的运行环境,即我们可以使用qt.conf 指定qt程序的运行路径和库路径。内容如下所示:

    # Generated by linuxdeployqt
    # https://github.com/probonopd/linuxdeployqt/
    [Paths]
    Prefix = ./		#程序的运行路径
    Libraries =  ./lib  #程序的库路径
    Plugins = plugins	#插件路径
    Imports = qml
    Qml2Imports = qml
    

    **参考:** [使用linuxdeployqt,在linux下发布qt](https://blog.csdn.net/WMX843230304WMX/article/details/78748835)

    在linux下使用linuxdeployqt发布Qt程序
    Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)

    Ubuntu下将现有的文件打包成deb包

  • 相关阅读:
    FastDFS源代码分析之tracker协议分析
    uva 11396Claw Decomposotion(二分图判定)
    Ising模型(伊辛模型)
    开发RESTful WebService
    HDU 4951 Multiplication table 阅读题
    【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三】动手绑定自己定义类至Lua
    as3文本框的动态拖拽和编辑
    cocos2d-x3.0rc 版 设置模拟器窗体大小
    chromium for android v34 2dcanvas硬件渲染实现分析
    唐季礼_百度百科
  • 原文地址:https://www.cnblogs.com/linuxAndMcu/p/11016322.html
Copyright © 2011-2022 走看看