Qt工作笔记-如何打包我们用 Qt 写的软件 - Linux 篇
個(gè)人補(bǔ)充下,這里打包的機(jī)器和部署都一個(gè)內(nèi)核,最好是一個(gè)廠家的。
?
原文地址:
https://zhuanlan.zhihu.com/p/49919048
?
概述
這部分內(nèi)容其實(shí)官方文檔已經(jīng)有介紹,包括三部分內(nèi)容:“Qt for Linux/X11 - Deployment”、“Qt for Windows - Deployment”和“Qt for MacOS - Deployment”。看起來還是很簡(jiǎn)單的,如果不想看官文的話,我以自己的實(shí)際項(xiàng)目為例,說明如何在 Linux 下打包我們的程序。
本文目錄結(jié)構(gòu):
一、準(zhǔn)備兩個(gè)腳本
-
- ldd.sh腳本
- hubeihdbtoexcel.sh腳本
- 給兩個(gè)腳本加權(quán)限
二、打包過程
-
- 1.添加程序依賴庫
- 2.添加 Qt 相關(guān)依賴庫
三、驗(yàn)證
某個(gè)湖北現(xiàn)場(chǎng)需要將數(shù)據(jù)庫中的數(shù)據(jù)輸出為Excel文件。現(xiàn)場(chǎng)機(jī)器環(huán)境為Qt4,由于導(dǎo)出Excel文件的第三方庫需要在Qt5環(huán)境下編譯,因此該教程的目的是在現(xiàn)場(chǎng)機(jī)器不安裝Qt5的情況下能正常運(yùn)行Qt5編譯的程序。
程序名:hubeihdbtoexcel
一、準(zhǔn)備兩個(gè)腳本
- ldd.sh腳本
- hubeihdbtoexcel.sh腳本
注意該腳本的名稱必須和程序名一致。
#!/bin/sh appname=`basename $0 | sed s,\.sh$,,` dirname=`dirname $0` tmp="${dirname#?}" if [ "${dirname%$tmp}" != "/" ]; then dirname=$PWD/$dirname fi LD_LIBRARY_PATH=$dirname export LD_LIBRARY_PATH $dirname/$appname "$@"給這兩個(gè)腳本加權(quán)限
sudo chmod 777 ldd.sh sudo chmod 777 hubeihdbtoexcel.sh二、打包過程
打包過程分為:添加程序依賴庫和Qt依賴庫。
(1)新建一個(gè)空的文件夾,用于存放程序及其動(dòng)態(tài)庫。例如“ExportToExcel文件夾”;
(2)將ldd.sh腳本復(fù)制到編譯目錄,如“build-hubeihdbtoexcel-Desktop_Qt_5_5_1_GCC_32bit-Release”;
(3)執(zhí)行“./ldd.sh hubeihdbtoexcel”,會(huì)在當(dāng)前目錄生成lib文件夾。其中存放著運(yùn)行hubeihdbtoexcel所依賴的庫文件;
(4)將lib文件夾中的所有文件復(fù)制到第1步新建的文件夾“ExportToExcel文件夾”中。至此,就可以刪除生成的lib文件夾和ldd.sh腳本了
2. 添加 Qt 相關(guān)依賴庫
(1)將ldd.sh腳本復(fù)制到Qt5安裝目錄的platforms文件夾中;
(2)執(zhí)行“./ldd.sh libqxcb.so”,將生成的lib文件夾中的所有文件拷貝到“ExportToExcel文件夾”中。有些庫可能重復(fù),點(diǎn)擊“替換”即可。執(zhí)行完該步驟后就可以刪除生成的lib文件夾和ldd.sh腳本了;
(3)返回上一級(jí),將platforms整個(gè)文件夾拷貝到“ExportToExcel文件夾”中,層級(jí)關(guān)系如下圖;
(4)該步驟為可選步驟。如果所編寫的程序有操作數(shù)據(jù)庫的動(dòng)作,還需要將與platforms同級(jí)目錄中的sqldrivers文件夾也拷貝到“ExportToExcel文件夾”中;
(5)最后將hubeihdbtoexcel.sh腳本拷貝到“ExportToExcel文件夾”中即可。然后將整個(gè)“ExportToExcel文件夾”壓縮就可以在其他機(jī)器上解壓縮后運(yùn)行。
?
三、驗(yàn)證
(1)將壓縮包解壓;
(2)執(zhí)行“./hubeihdbtoexcel.sh”,程序正常運(yùn)行。
總結(jié)
以上是生活随笔為你收集整理的Qt工作笔记-如何打包我们用 Qt 写的软件 - Linux 篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt文档阅读笔记-Qt跨平台库(Qt基本
- 下一篇: 信息安全工程师笔记-案例分析(四)