Linux下解决发布Qt程序报错:it could not find or load the Qt platform plugin “xcb” in “”
簡述
用Qt5.8版本在ubuntu16.04版本下編寫Qt應(yīng)用程序,生成release版本并打包,到另一臺(tái)無Qt環(huán)境的linux系統(tǒng)中運(yùn)行。
網(wǎng)上通常是按以下幾個(gè)步驟進(jìn)行:
1、生成release程序。
2、拷貝release程序到一個(gè)新文件夾,執(zhí)行一個(gè)腳本文件。腳本文件的作用是:ldd 程序名,并拷貝程序依賴的庫到這個(gè)新文件夾。
3、編寫一個(gè)和程序同名的sh文件,以此作為啟動(dòng)程序。不直接用release程序啟動(dòng)的好處是可以無須配置環(huán)境變量,而把配置環(huán)境變量過程寫在sh腳本文件中(當(dāng)然也可以配置環(huán)境變量后運(yùn)行release程序的方式啟動(dòng)程序)。
4、拷貝platforms文件夾到這個(gè)新文件夾。
5、拷貝整個(gè)新文件夾到新linux系統(tǒng),發(fā)布完成。
作者在第5步后會(huì)提示failed to start because it could not find or load the Qt platform plugin “xcb” in “”的錯(cuò)誤,由于對(duì)linux文件系統(tǒng)的不熟悉,研究了一天才解決。
解決
經(jīng)過上網(wǎng)查詢,這個(gè)問題主要是platforms文件夾中l(wèi)ibqxcb.so的依賴庫沒有拷貝導(dǎo)致的。可是如何拷貝依賴庫,是個(gè)大問題!
在程序當(dāng)前目錄下輸入ldd platforms/libqxcb.so后,提示/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 “not found”,去原linux電腦中,確實(shí)找到了libQt5XcbQpa.so.5文件,但把這個(gè)文件拷貝到release所在目錄下并沒有效果!
研究了一天,才明白libQt5XcbQpa.so.5文件是鏈接文件!使用ls -al可以找到鏈接文件對(duì)應(yīng)的源文件!把源文件拷貝到release目錄下,再新建一個(gè)相同名字的鏈接文件,才算完成了這個(gè)libQt5XcbQpa.so.5資源文件的打包!!
新建鏈接文件的命令:ln -s $PWD/libQt5XcbQpa.so.5.8.0 libQt5XcbQpa.so.5。
同樣的,還有一個(gè)libQt5DBus.so.5的鏈接文件,也要通過拷貝真實(shí)文件(libQt5DBus.so.5.8.0)到打包目錄,然后通過ln -s $PWD/libQt5DBus.so.5.8.0 libQt5DBus.so.5命令建立同名的鏈接文件。
“xcb” in “”的問題完美解決,程序正常啟動(dòng)運(yùn)行了。
————————————————
版權(quán)聲明:本文為CSDN博主「lusanshui」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lusanshui/article/details/84988017
總結(jié)
以上是生活随笔為你收集整理的Linux下解决发布Qt程序报错:it could not find or load the Qt platform plugin “xcb” in “”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一. NSIS介绍
- 下一篇: 自动化要不要学python-老男孩lin