前言
本文記錄了在飛騰架構(gòu)麒麟V10桌面系統(tǒng)中打包Qt應(yīng)用程序及部署的一些注意事項(xiàng)。打包工具使用的是linuxdeployqt,在飛騰架構(gòu)架構(gòu)下沒有現(xiàn)成的工具安裝包,需要自行編譯安裝。
1. linuxdeployqt
首先下載linuxqtdeploy下載地址https://github.com/probonopd/linuxdeployqt
下載之后解壓目錄如上圖所示,在編譯之前需要修改一個(gè)地方,如下圖所示紅色框中的if(strvercmp(glcv, "2.32") >= 0)
改為if(strvercmp(glcv, "20") >= 0)
,其中g(shù)lcv的定義為 const char *glcv = gnu_get_libc_version ();
表示libc的版本號(hào), 麒麟V10上自帶的glibc版本遠(yuǎn)大于2.32而小于20,所以這里改為20 就不會(huì)報(bào)錯(cuò)了。
1.1 編譯安裝 linuxdeployqt
編譯linuxdeployqt需要參考根目錄下的BUILDING.md文檔,打開該文檔,按照提示來(lái)編譯,下面是需要執(zhí)行的一些命令:
sudo apt-get -y install git g++ libgl1-mesa-dev
#將qt5的bin目錄添加到環(huán)境變量
export PATH=/opt/qt5/bin:$PATH
cd linuxdeployqt
qmake
make
不出意外的話,編譯很快結(jié)束,這時(shí)已經(jīng)生成了linuxqtdeploy 可執(zhí)行程序,如果想要安裝到qt5的bin目錄下的話則執(zhí)行下面的安裝命令:
sudo make install
1.2 編譯安裝 patchelf
下載源碼及編譯安裝命令如下:
wget https://nixos.org/releases/patchelf/patchelf-0.9/patchelf-0.9.tar.bz2
tar xf patchelf-0.9.tar.bz2
( cd patchelf-0.9/ && ./configure && make && sudo make install )
1.3 可選安裝 appimagetool
如果想要生成AppImages,下載系統(tǒng)對(duì)應(yīng)版本的 appimagetool 并添加到系統(tǒng)環(huán)境變量$PATH中, 例如安裝到/usr/local/bin 目錄下,確保下載的文件重命名為 appimagetool
并添加了可執(zhí)行權(quán)限,chmod a+x
。下載及安裝命令如下:
sudo wget -c "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" -O /usr/local/bin/appimagetool
sudo chmod a+x /usr/local/bin/appimagetool
至此打包工具安裝完成,接下來(lái)嘗試打包Qt程序。
2.設(shè)置環(huán)境變量
用linuxdeployqt 打包的過(guò)程中,會(huì)自動(dòng)將程序依賴的庫(kù)文件拷貝到指定目錄中去,前提是這些庫(kù)能被工具訪問(wèn)到。qt程序依賴的庫(kù)和插件基本上在qt的安裝目錄下,如果程序還依賴其他的庫(kù),如自己編譯的動(dòng)態(tài)庫(kù)、數(shù)據(jù)庫(kù)驅(qū)動(dòng)等,都要將其所在的目錄添加到環(huán)境變量中。下面是一個(gè)配置環(huán)境變量的示例:
#linuxdeployqt安裝在/opt/qt5/bin目錄下,確保在終端可以執(zhí)行該程序
export PATH=/opt/qt5/bin:$PATH
#需要打包的qt程序依賴的庫(kù)目錄,bin目錄下有程序依賴的其他so庫(kù)
export LD_LIBRARY_PATH=/home/demo/bin:$LD_LIBRARY_PATH
#需要打包的qt程序依賴的qt庫(kù)目錄
export LIB_PATH=/opt/qt5/lib:$LIB_PATH
#需要打包的qt程序依賴的qt插件目錄
export PLUGIN_PATH=/opt/qt5/plugins:$PLUGIN_PATH
接下來(lái)正式打包qt程序。
3. 打包
將編譯好的qt應(yīng)用程序demo拷貝到一個(gè)空目錄package下。在上面設(shè)置好環(huán)境變量的終端內(nèi)切換目錄到package下,執(zhí)行打包命令:
linuxdeployqt demo -appimage
根據(jù)程序依賴庫(kù)的多少,打包時(shí)間會(huì)有很大差異,打包過(guò)程會(huì)在package根目錄下創(chuàng)建一些目錄,結(jié)構(gòu)如下:
如果在打包過(guò)程中程序依賴的某個(gè)庫(kù)文件找不到,打包進(jìn)程將終止并將缺少的庫(kù)信息輸出到終端,根據(jù)提示在系統(tǒng)中找到依賴的庫(kù)拷貝到對(duì)應(yīng)的環(huán)境變量所在的目錄下后,再次執(zhí)行打包命令,直到打包完成,不報(bào)錯(cuò)。這里有個(gè)小技巧,如果缺少的是qt插件,可以嘗試在麒麟V10系統(tǒng)自帶的qt安裝目錄下拷貝到你的qt環(huán)境中,前提是qt大版本相同。
打包完成后,需要將程序運(yùn)行所需的一些配置文件、樣式表、sqlite數(shù)據(jù)庫(kù)文件等拷貝到package目錄下。
4.測(cè)試
打包完成后需要測(cè)試程序是否能獨(dú)立運(yùn)行,重新打開一個(gè)終端,在新終端里用命令運(yùn)行demo程序,看程序能否正常啟動(dòng),若能正常啟動(dòng),則說(shuō)明打包成功,若啟動(dòng)失敗則根據(jù)錯(cuò)誤提示解決問(wèn)題。
5.添加啟動(dòng)圖標(biāo)
5.1 設(shè)置桌面圖標(biāo)和開始菜單圖標(biāo)
在打包的根目錄下會(huì)生成名為default.png 和 default.desktop兩個(gè)文件,其中default.png 就代表應(yīng)用程序圖標(biāo),需要替換成你的應(yīng)用程序圖標(biāo)即可。default.desktop文件的內(nèi)容如下:
[Desktop Entry]
Type=Application
Name=XXXX系統(tǒng)
Exec=/home/demo/ZODA
Icon=/home/demo/zoda.png
Comment=XXX系統(tǒng)
Terminal=true
這里需要關(guān)注的是Exec 和 Icon這兩個(gè)字段,其中Exec為應(yīng)用程序所在的絕對(duì)路徑,Icon為應(yīng)用程序所在的絕對(duì)路徑。將default.desktop重命名為應(yīng)用程序的名字如zoda.desktop,如果Exec和 Icon這兩個(gè)值設(shè)置正確,zoda.desktop文件的圖標(biāo)會(huì)變成應(yīng)用程序圖標(biāo)的樣子。修改zoda.desktop的權(quán)限,添加可執(zhí)行權(quán)限chmod +x
,然后拷貝到桌面,就可以在桌面雙擊圖標(biāo)打開應(yīng)用程序。將 zoda.desktop 拷貝到/usr/share/applications/ 目錄下即可在開始菜單中看到你的應(yīng)用程序的圖標(biāo)。
5.2設(shè)置任務(wù)欄圖標(biāo)
qt應(yīng)用程序的任務(wù)欄圖標(biāo)要在程序中設(shè)置,首先將png格式的圖標(biāo)轉(zhuǎn)為ico格式,并添加在資源文件中,然后在程序的主窗口中設(shè)置圖標(biāo)
MainWindow w;
w.setWindowIcon(QIcon(":/zoda.ico"));
重新編譯運(yùn)行程序即可在任務(wù)欄中看到應(yīng)用程序的圖標(biāo)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-666484.html
6.總結(jié)
以上就是本文的所有內(nèi)容了,文中的打包部署步驟都是筆者親自動(dòng)手實(shí)踐后的記錄,真實(shí)有效。如對(duì)文中內(nèi)容有疑問(wèn),歡迎留言討論!!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-666484.html
到了這里,關(guān)于飛騰架構(gòu)麒麟V10桌面系統(tǒng)Qt應(yīng)用程序打包的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!