Can not load “libqxcb.so”
今天將qt的程序打包在客戶機(jī)器上部署,彈出如下提示:
Got keys from plugin meta data ("xcb") Cannot load library /home/lc1/Desktop/comTool/bin/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: version `Qt_5_PRIVATE_API' not found (required by /home/lc1/Desktop/comTool/bin/platforms/libqxcb.so)) QLibraryPrivate::loadPlugin failed on "/home/lc1/Desktop/comTool/bin/platforms/libqxcb.so" : "Cannot load library /home/lc1/Desktop/comTool/bin/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: version `Qt_5_PRIVATE_API' not found (required by /home/lc1/Desktop/comTool/bin/platforms/libqxcb.so))" qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.這種錯(cuò)誤只會(huì)在linux或類linux操作系統(tǒng)上出現(xiàn),Windows上不會(huì)出現(xiàn)。因?yàn)閃indows機(jī)器不需要qxcb庫。造成這種錯(cuò)誤的原因是:1):部署軟件時(shí),沒有將Qt插件文件下的platforms中的libqxcb.so庫部署上去。2): 原因1)中的libqxcb.so庫部署了,但是原因 1)中的libqxcb.so庫又依賴了其它的Qt庫,而這些依賴的庫本應(yīng)該從你提供的安裝包的庫目錄查找的,現(xiàn)在卻是從其它地方找的,如:從上面可以看到libqxcb.so依賴了libQt5XcbQpa.so.5,這個(gè)庫本應(yīng)該在你安裝目錄下,比如:你安裝目錄下有l(wèi)ib文件夾,且lib文件夾下有個(gè)libQt5XcbQpa.so.5,但從上面的提示可以看出,程序搜索的是/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5,而不是你安裝包目錄下的lib文件夾下的libQt5XcbQpa.so.5,雖然說都是libQt5XcbQpa.so.5,但版本不一致可能會(huì)導(dǎo)致出現(xiàn)加載庫失敗,比如:你部署機(jī)器的linux系統(tǒng)自帶的Qt(一般是因?yàn)閘inux有圖形界面,而圖形界面用到了Qt,所以對(duì)于圖形界面的linux系統(tǒng)一般會(huì)有些Qt的庫)版本是5.6.1,而你部署的程序是用其它版本開發(fā)的,比如:Qt 5.14.1,這就會(huì)導(dǎo)致不兼容而加載庫失敗。
解決方法如下:
1):在你程序需要部署的目錄即安裝包目錄下新建platforms目錄。
2):到你開發(fā)的機(jī)器上的Qt安裝目錄下的plugins/platforms目錄下找到libqxcb.so,并將其拷貝到步驟1)中的platforms目錄。
3):執(zhí)行l(wèi)dd libqxcb.so 以便找出libqxcb.so依賴的所有Qt庫。
4):將步驟3)中找到的依賴庫中所有和Qt有關(guān)的庫拷貝到你安裝包下的庫目錄下,如:
安裝包目錄/lib????? 然后建立一些庫的鏈接。
經(jīng)過這四步驟后,目錄應(yīng)該如下;
?
? ?
5):執(zhí)行:
sudo /etc/profile在文件的末尾加入:
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:安裝包目錄/lib注意:有部分linux在/etc/profile中設(shè)置LD_LIBRARY_PATH不起作用,對(duì)這部分linux請(qǐng)自行查閱相關(guān)手冊(cè)。
6):重啟linux。
7):執(zhí)行如下命令:
??????
echo $LD_LIBRARY_PATH如果輸出中包含了 “?安裝包目錄/lib”目錄,則5)步驟配置成功
如果上面都沒問題,則部署的程序應(yīng)該能跑起來。
總結(jié)
以上是生活随笔為你收集整理的Can not load “libqxcb.so”的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Could not find qmake
- 下一篇: 苹果为 Apple Watch Ultr