QT應(yīng)用啟動(dòng)失敗排查方法小結(jié)
背景
啟動(dòng)QT應(yīng)用經(jīng)常會(huì)碰到應(yīng)用啟動(dòng)失敗,qt platform plugin無法啟動(dòng),比如:
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.Available platform plugins are: xcb.
Aborted (core dumped)
排查辦法
打開QT Plugin加載調(diào)試開關(guān)
export QT_DEBUG_PLUGINS=1
重新啟動(dòng)應(yīng)用,會(huì)得到更詳細(xì)的錯(cuò)誤信息,如下
QFactoryLoader::QFactoryLoader() checking directory path "/home/netease/working/hermes/pc_mac/build/bin/plugins/platforms" ... QFactoryLoader::QFactoryLoader() looking at "/home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/libqxcb.so" Found metadata in lib /home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/libqxcb.so, metadata= { "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3", "MetaData": { "Keys": [ "xcb" ] }, "archreq": 0, "className": "QXcbIntegrationPlugin", "debug": false, "version": 331520 } Got keys from plugin meta data ("xcb") QFactoryLoader::QFactoryLoader() checking directory path "/home/netease/working/hermes/pc_mac/build/bin/platforms" ... Cannot load library /home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/libqxcb.so: (libxcb-xinput.so.0: cannot open shared object file: No such file or directory) QLibraryPrivate::loadPlugin failed on "/home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/libqxcb.so" : "Cannot load library /home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/libqxcb.so: (libxcb-xinput.so.0: cannot open shared object file: No such file or directory)" 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. Available platform plugins are: xcb. Aborted (core dumped)
可以看出根本原因是Cannot load library /home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/libqxcb.so: (libxcb-xinput.so.0: cannot open shared object file: No such file or directory)
加載不了libqxcb.so
, 依賴的動(dòng)態(tài)庫libxcb-xinput.so.0
找不到, ldd查看如下:
[netease@netease-Precision-3630-Tower ~/working/hermes/pc_mac/build/bin]$ ldd /home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/libqxcb.so linux-vdso.so.1 (0x00007ffc3330b000) libQt5XcbQpa.so.5 => /home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/../../lib/libQt5XcbQpa.so.5 (0x00007fc35406c000) libQt5Gui.so.5 => /home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/../../lib/libQt5Gui.so.5 (0x00007fc353800000) libQt5Core.so.5 => /home/netease/working/hermes/pc_mac/build/bin/plugins/platforms/../../lib/libQt5Core.so.5 (0x00007fc352b8f000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc352806000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc352415000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc3521f6000) libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007fc351ff4000) libxcb-icccm.so.4 => /usr/lib/x86_64-linux-gnu/libxcb-icccm.so.4 (0x00007fc351def000) libxcb-image.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-image.so.0 (0x00007fc351bea000) libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007fc3519e7000) libxcb-keysyms.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-keysyms.so.1 (0x00007fc3517e4000) libxcb-randr.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-randr.so.0 (0x00007fc3515d4000) libxcb-render-util.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render-util.so.0 (0x00007fc3513d0000) libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007fc3511c3000) libxcb-shape.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shape.so.0 (0x00007fc350fbf000) libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007fc350db8000) libxcb-xfixes.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007fc350bb0000) libxcb-xinerama.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xinerama.so.0 (0x00007fc3509ad000) libxcb-xinput.so.0 => not found libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fc350675000) libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007fc35046d000) libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007fc350252000) libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fc35002a000) libxcb-xkb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-xkb.so.1 (0x00007fc34fe0e000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc34fa70000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc34f858000) libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fc34f5cc000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc34f3c8000) /lib64/ld-linux-x86-64.so.2 (0x00007fc35477b000) libxcb-util.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-util.so.1 (0x00007fc34f1c2000) libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fc34efbb000) libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fc34eda6000) libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fc34eba2000) libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fc34e99c000) libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fc34e76b000) libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fc34e4b5000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc34e2ad000)
確實(shí)是 libxcb-xinput.so.0 => not found
解決辦法
安裝確實(shí)的三方庫即可解決
sudo apt install libxcb-xinput-dev
到此這篇關(guān)于QT應(yīng)用啟動(dòng)失敗排查方法小結(jié)的文章就介紹到這了,更多相關(guān)QT應(yīng)用啟動(dòng)失敗排查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何在c++中實(shí)現(xiàn)字符串分割函數(shù)split詳解
這篇文章主要給大家介紹了關(guān)于如何在c++中實(shí)現(xiàn)字符串分割函數(shù)split的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11c++11之std::async 和std::thread的區(qū)別小結(jié)
std::async和std::thread都是C++11中提供的線程庫,它們都可以用于創(chuàng)建新線程,本文主要介紹了c++11之std::async 和std::thread的區(qū)別小結(jié),感興趣的可以了解一下2024-02-02VTK8.1?在?Qt5.9?環(huán)境下的配置編譯和安裝過程
為了實(shí)現(xiàn)realsense的PCL點(diǎn)云顯示,需要VTK支持。由于整個(gè)平臺(tái)在Qt環(huán)境實(shí)現(xiàn),VTK編譯為Qt插件。整個(gè)過程并不復(fù)雜,網(wǎng)上的文章大多不全,自己梳理了一下,分享出來,需要的朋友可以參考下2022-07-07VC實(shí)現(xiàn)五子棋游戲的一個(gè)算法示例
這篇文章主要介紹了VC實(shí)現(xiàn)五子棋游戲的一個(gè)算法示例,對(duì)于學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的朋友有一定的借鑒價(jià)值,需要的朋友可以參考下2014-08-08