1. 程式人生 > >在Linux下使用linuxdeployqt釋出Qt程式

在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
Qml2I