一、簡介
linuxdeployqt 是Linux下的qt打包工具,可以將應用程序使用的資源(如庫,圖形和插件)復制到二進制運行文件所在的文件夾中。
二、安裝linuxdeployqt
去github直接下載編譯好的 linuxdeployqt-x86_64.AppImage 應用程序文件。

下載好之后,將其改名為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 腳本)
