News

Discover more

在Linux下(xià)使用(yòng)linuxdeployqt發布Qt程序


一、簡介

linuxdeployqt 是Linux下(xià)的(de)qt打包工具,可(kě)以将應用(yòng)程序使用(yòng)的(de)資源(如庫,圖形和(hé)插件)複制到二進制運行文件所在的(de)文件夾中。


二、安裝linuxdeployqt

github直接下(xià)載編譯好的(de) linuxdeployqt-x86_64.AppImage 應用(yòng)程序文件。
image.png
下(xià)載好之後,将其改名爲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 #輸出的(de)版本信息 linuxdeployqt 5 (commit 37631e5), build 631 built on 2019-01-25 22:47:58 UTC 

三、配置 qt 的(de)環境變量

終端輸入vim ~/.bashrc命令,修改 .bashrc 文件,在文件末尾追加以下(xià)内容,其中/home/zlkj/technology/5.9.7是我的(de)Qt安裝路徑,大(dà)家要用(yòng)自己的(de)路徑代替:

#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一下(xià)使 ~/.bashrc 這(zhè)個(gè)shell文件立即生效,而不必注銷并重新登錄。

$ source ~/.bashrc 

四、打包應用(yòng)程序

(1)運行Qt生成release版本的(de)可(kě)執行文件,勾選了(le)“shadow build”,所以示例用(yòng)的(de)是build-cleanRobot-Desktop_Qt_5_9_7_GCC_64bit-Release文件夾下(xià)的(de)cleanRobot可(kě)執行文件;
(2)創建一個(gè)文件夾,名稱最好是用(yòng)可(kě)執行文件的(de)名稱,然後将cleanRobot可(kě)執行文件複制到此文件夾下(xià);
(3)使用(yòng) linuxdeployqt 進行打包,一定要加上-appimage選項,命令如下(xià):

$ linuxdeployqt cleanRobot -appimage 

執行上面命令出現提示信息,不用(yòng)管,隻是創建了(le)一個(gè)需要你自己編輯的(de)desktop文件:

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

到這(zhè)一步,就把可(kě)執行文件的(de)動态庫等依賴文件都複制到該文件夾中了(le)。


五、編寫linux桌面圖标啓動(可(kě)選步驟)

修改qt 目錄下(xià)的(de)desktop文件。可(kě)以按照(zhào)ubuntu 官方提示修改。
ubuntu desktop文件使用(yòng)

#-- 全局安裝(所有用(yòng)戶可(kě)用(yòng)),将xxx.desktop 複制到/usr/share/applications  
#-- 當前用(yòng)戶可(kě)用(yòng), 将xxx.desktop 複制到 ~/.local/share/applications 目錄即可(kě)
#--appName.desktop
[Desktop Entry]
Version=1.0 #app的(de)版本
Name=cleanRobot #app的(de)名字
Comment= this app use for xxx #說明(míng)信息 
Exec=/path/to/your/QtApp/cleanRobot #app的(de)執行路徑,絕對(duì)路徑
Icon=/path/to/your/app_icon/cleanRobot.ico #icon 路徑,絕對(duì)路徑
Terminal=false #是否在終端啓動,效果自己試一下(xià)就知道了(le)
Type=Application
Categories=Utility;Application; 

六、編寫開機腳本 runApp.sh

執行以下(xià)命令,創建runApp.sh:

$ vim runApp.sh 

寫入以下(xià)内容:

#!/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添加可(kě)執行權限:

$ chmod +x runApp.sh 

此時(shí)運行開機腳本,則可(kě)啓動程序。其實到這(zhè)一步就可(kě)以發布了(le),壓縮成一個(gè)壓縮包發布即可(kě),可(kě)如果想繼續打包成deb包,可(kě)以看下(xià)一步。

七、打包成deb包

deb是Debian Linux的(de)軟件包格式。一般來(lái)說是需要通(tōng)過編譯源碼然後制作deb包,而這(zhè)裏是将前面生成的(de)發布文件夾打包成deb包。步驟如下(xià):

首先建立一個(gè)工作目錄,比如在主文件夾下(xià)建立clean目錄:

$ cd ~ $ mkdir clean $ cd clean 

因爲安裝軟件包的(de)時(shí)候默認是将文件釋放到根目錄下(xià),所以我們這(zhè)裏設定安裝路徑爲/usr/src:

$ mkdir -p usr/src #設定安裝路徑爲/usr/src $ cp -a ~/cleanRobot usr/src $ mkdir DEBIAN 

同時(shí)我們還(hái)需建立一個(gè)DEBIAN目錄,用(yòng)如下(xià)的(de)方法在DEBIAN目錄下(xià)創建一個(gè)control文件,并加入以下(xià)内容:

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

然後就可(kě)以使用(yòng)dpkg命令構建deb包了(le),生成的(de)包在/home目錄下(xià):

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

安裝deb包命令如下(xià):

$ sudo dpkg -i soft_1.0.1_i386.deb  

就可(kě)以看到/usr/src多(duō)出了(le)個(gè)cleanRobot目錄,至此大(dà)功告成,運行開機腳本即可(kě)。


八、擴展

1、關于qt.conf

這(zhè)個(gè)文件指定了(le)qt 程序的(de)運行環境,即我們可(kě)以使用(yòng)qt.conf 指定qt程序的(de)運行路徑和(hé)庫路徑。内容如下(xià)所示:

# Generated by linuxdeployqt # https://github.com/probonopd/linuxdeployqt/ [Paths]
Prefix = ./		#程序的(de)運行路徑
Libraries =  ./lib  #程序的(de)庫路徑
Plugins = plugins	#插件路徑
Imports = qml
Qml2Imports = qml

相關文章(zhāng)

上拉電阻和(hé)下(xià)拉電阻

上拉電阻和(hé)下(xià)拉電阻

在折騰Arduino或者樹莓派信号輸入的(de)時(shí)候,時(shí)常聽(tīng)到的(de)就是上拉電阻和(hé)下(xià)拉電阻,

查看全文

牛逼的(de)樹莓派dashboard

樹莓派安裝 Nginx + PHP7.3 + Pi Dashboard

查看全文

Linux 下(xià)使用(yòng) system

下(xià)面的(de)教程将介紹如何将命令或程序配置爲開機啓動時(shí)自動運行的(de)服務。完成配置之後,就

查看全文