Ubuntu18.04下使用linuxdeployqt對QT5項目打包,以及生成快捷方式

前言

此方法適用于對自己建立的QT項目進行打包,Ubuntu環(huán)境為18.04臭挽,使用QT Creator4.12.3 Based on Qt5.14.2。項目打包之后可以復(fù)制到其他電腦上運行咬腕,切具有快捷啟動方式欢峰。

一.下載并安裝linuxdeployqt

1.下載

方式一:若系統(tǒng)在ubuntu18.04以下,可以直接去 github下載編譯好的linuxdeployqt-x86_64.AppImage 應(yīng)用程序文件
方式二:若系統(tǒng)ubuntu18.04涨共,則github上還未提供已經(jīng)編譯好的AppImage,需要下載[linuxdeployqt源碼](https://github.com/probonopd/linuxdeployqt自己在系統(tǒng)上進行編譯后方可使用纽帖。

2.安裝

方式一:利用下載編譯好的linuxdeployqt-x86_64.AppImage 應(yīng)用程序文件。下載好之后举反,將其改名為linuxdeployqt抛计,并chmod +x,然后復(fù)制到 /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

方式二:編譯源碼波俄。
首先默認已經(jīng)安裝好了g++、git等工具蛾默,如果沒有的話得先安裝懦铺。還需要安裝 patchelf 工具,命令如下:

sudo apt install patchelf

gitclone源碼(建議一定要使用命令行支鸡,直接download的會編譯失敗)

git clone https://github.com/probonopd/linuxdeployqt.git
#進入linuxdeployqt文件夾冬念,命令如下:
cd linuxdeployqt
#修改 tools/linuxdeployqt/main.cpp 源代碼,注釋掉源碼中版本判斷的語句牧挣。
gedit tools/linuxdeployqt/main.cpp

之后右鍵linuxdeployqt文件夾急前,使用QT Creator打開,配置工程后在release模式下進行編譯瀑构,可以得到linuxdeployqt的二進制文件裆针,路徑為(tools/linuxdeployqt/linuxdeployqt)。

#進入二進制文件所在路徑
cd ./tools/linuxdeployqt
#賦予可執(zhí)行權(quán)限
sudo chmod a+x linuxdeployqt
#為了方便之后使用寺晌,可以將該可執(zhí)行文件復(fù)制到 /usr/local/bin 目錄下:
sudo cp linuxdeployqt /usr/local/bin/

二.安裝appimagetool

linuxdeployqt命令要用到選項 -appImage世吨,因此需要安裝一下 appimagetool,下載和安裝命令如下:

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

三.配置 qt 的環(huán)境變量

終端輸入vim ~/.bashrc命令呻征,修改 .bashrc 文件耘婚,在文件末尾追加以下內(nèi)容,其中/opt/Qt/5.15.0是我的Qt安裝路徑陆赋,大家要用自己的路徑代替:

#add QT ENV
export PATH=/opt/Qt/5.15.0/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=/opt/Qt/5.15.0/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/opt/Qt/5.15.0/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/opt/Qt/5.15.0/gcc_64/qml:$QML2_IMPORT_PATH

最后要source一下使 ~/.bashrc 這個shell文件立即生效沐祷,而不必注銷并重新登錄嚷闭。

$ source ~/.bashrc

四.運行l(wèi)inuxdeployqt命令,進行打包

1.運行Qt生成release版本的可執(zhí)行文件戈轿,勾選了“shadow build”,所以示例用的是"build-自己的工程名稱-Desktop_Qt_5_15_0_GCC_64bit-Release"文件夾下的自己的工程名稱可執(zhí)行文件阵子;
2.創(chuàng)建一個文件夾思杯,名稱最好是用可執(zhí)行文件的名稱,然后將自己的工程名稱可執(zhí)行文件復(fù)制到此文件夾下挠进;
3.使用 linuxdeployqt 進行打包色乾,一定要加上-appimage選項,命令如下:

$ linuxdeployqt  自己的工程名稱  -appimage
到這里會出現(xiàn)幾個問題:

問題一:lib*.so.1 => not found领突,類似此類的輸出暖璧,說明該動態(tài)鏈接庫找不到,可以進行如下操作君旦。

#先查看二進制文件所依賴的動態(tài)庫文件有哪些
$ldd #二進制文件的名稱
#找到所依賴的庫文件的路徑澎办,并添加到/etc/ld.so.conf
#例如.so庫文件的路徑在/usr/lib/x86_64-linux-gnu,就在/etc/ld.so.conf文件中加上/usr/lib/x86_64-linux-gnu金砍,缺少哪個庫就添加哪個庫的路徑
$sudo vim /etc/ld.so.conf
#保存配置文件后局蚀,使用下面的命令使其生效
$sudo /sbin/ldconfig

問題二:在問題一的基礎(chǔ)上,還會提示缺少依賴庫恕稠,但通過ldd查詢卻沒有該依賴庫琅绅,此時可以去考慮百度搜索該庫的名稱,看是否缺少該庫對應(yīng)的軟件包鹅巍。例如我提示的是libpq.so.5 notfound千扶,通過搜索發(fā)現(xiàn)該依賴庫屬于postgresql,通過如下命令進行安裝

$sudo apt install postgresql
#通過該命令取查找?guī)煳募穆窂?$sudo find / -name libpq.so.5

最后像問題一中一樣添加路徑并使其生效骆捧。
問題三:在問題一中使配置生效的一步中澎羞,可能會提示類似“*libcudnn.so.5 不是符號連接”的問題,那么可以如下方式解決敛苇。重新建立鏈接并刪除原鏈接煤痕。
首先找到usr/local/cuda-8.0/lib64/目錄(libcudnn所在目錄),搜索 libcudnn 然后發(fā)現(xiàn)兩個文件libcudnn.so.5 和libcudnn.so.5.0.5 理論上只有一個libcudnn.so.5.0.5

#終端執(zhí)行
$ln -sf /usr/local/cuda-8.0/lib64/libcudnn.so.5.0.5 /usr/local/cuda-8.0/lib64/libcudnn.so.5
#再進行
$sudo ldconfig

這時候會發(fā)現(xiàn)usr/local/cuda-8.0/lib64/目錄下只有l(wèi)ibcudnn.so.5.0.5 文件了接谨,libcudnn.so.5消失了摆碉。這個問題就可以解決了。

五.打包后的處理

1.如果在執(zhí)行完$ linuxdeployqt 自己的工程名稱 -appimage命令以后脓豪,出現(xiàn)如下內(nèi)容(還有提示圖標或者其他庫的問題的可以忽略巷帝,只要看到下面的輸出,就說明成功了):

Categories entry not found in desktop file
.desktop file is missing a Categories= key

此時會生成AppRun文件扫夜,./AppRun或者./自己工程的二進制文件都可以運行楞泼,如果項目運行用到了本地文件驰徊,也要放到二進制文件所在的目錄里面才能保證項目的正常運行。

六.使其像應(yīng)用程序一樣可以啟動

1.首先剛剛linuxdeployqt執(zhí)行完之后堕阔,會生成default.desktop文件棍厂,使用vim對其進行編輯,內(nèi)容如下

[Desktop Entry]
Version=app的版本
Name=app的名字
Comment= 說明信息 
Exec=app的執(zhí)行路徑超陆,絕對路徑
Icon=icon 路徑牺弹,絕對路徑
Terminal=false #是否在終端啟動
Type=Application
Categories=Utility;Application;

之后賦予權(quán)限

chmod a+x default.desktop

這時就可以直接雙擊運行了(提示信任時,直接點擊信任即可时呀,這時會發(fā)現(xiàn)圖標和名稱也變了)张漂。

注:這里自定義生成.desktop文件可以復(fù)制到/usr/share/applications中,這樣應(yīng)用程序中就可以有改程序谨娜;.desktop文件無論復(fù)制到什么路徑下都可以執(zhí)行航攒,且項目運行的當前路徑為主目錄(比如,工程中有數(shù)據(jù)庫操作趴梢,那么生成的數(shù)據(jù)庫文件就會在主目錄漠畜,同理,工程依賴的資源文件坞靶,也要放在主目錄)盆驹。

上述內(nèi)容參考:
1.在Linux下使用linuxdeployqt發(fā)布Qt程序
2.ubuntu18.04通過linuxdeployqt打包Qt5.0項目
3.ldd * -> not found
4.解決*.so不是符號連接
5.加載共享庫時出錯

還可以嘗試不使用linuxdeployqt
Qt實用技巧:ubuntu發(fā)布程序打包流程(解決插件xcb加載失敗)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市滩愁,隨后出現(xiàn)的幾起案子躯喇,更是在濱河造成了極大的恐慌,老刑警劉巖硝枉,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廉丽,死亡現(xiàn)場離奇詭異,居然都是意外死亡妻味,警方通過查閱死者的電腦和手機正压,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來责球,“玉大人焦履,你說我怎么就攤上這事〕猓” “怎么了嘉裤?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長栖博。 經(jīng)常有香客問我屑宠,道長,這世上最難降的妖魔是什么仇让? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任典奉,我火速辦了婚禮躺翻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卫玖。我一直安慰自己公你,他們只是感情好,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布假瞬。 她就那樣靜靜地躺著陕靠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笨触。 梳的紋絲不亂的頭發(fā)上懦傍,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天雹舀,我揣著相機與錄音芦劣,去河邊找鬼。 笑死说榆,一個胖子當著我的面吹牛虚吟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播签财,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼串慰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了唱蒸?” 一聲冷哼從身側(cè)響起邦鲫,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎神汹,沒想到半個月后庆捺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡屁魏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年滔以,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氓拼。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡你画,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桃漾,到底是詐尸還是另有隱情坏匪,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布撬统,位于F島的核電站剥槐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宪摧。R本人自食惡果不足惜粒竖,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一颅崩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蕊苗,春花似錦沿后、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞧柔,卻和暖如春漆弄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背造锅。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工撼唾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哥蔚。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓倒谷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親糙箍。 傳聞我的和親對象是個殘疾皇子渤愁,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348