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