5.7
Qt 5.5
がプリインストールされているUbuntu 16.04 LTSで、Qt でコンパイルしたバイナリを起動しようとしました。うまくいきませんでした。
最初に、ldd
ここで提案されているようにバイナリ自体を検査し、すべての「見つからない」依存関係を「満足」させました。次に、この悪名高いThis application failed to start because it could not find or load the Qt platform plugin "xcb"
エラーがスローされました。
Linuxでこれを解決する方法
platforms
QtがXCBライブラリを探す場所なので、最初にバイナリがあるディレクトリを作成する必要があります。libqxcb.so
そこにコピーします。他の回答の著者がこれについて言及しなかったのはなぜでしょうか。
次に、QT_DEBUG_PLUGINS=1
環境変数を設定してバイナリを実行し、どの依存関係libqxcb.so
が「満足」されていないかを確認します。(ldd
これは、受け入れられた回答で提案されているように使用することもできます)。
コマンド出力は次のようになります。
me@xerus:/media/sf_Qt/Package$ LD_LIBRARY_PATH=. QT_DEBUG_PLUGINS=1 ./Binary
QFactoryLoader::QFactoryLoader() checking directory path "/media/sf_Qt/Package/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/media/sf_Qt/Package/platforms/libqxcb.so"
Found metadata in lib /media/sf_Qt/Package/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"xcb"
]
},
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 329472
}
Got keys from plugin meta data ("xcb")
loaded library "/media/sf_Qt/Package/platforms/libqxcb.so"
QLibraryPrivate::loadPlugin failed on "/media/sf_Qt/Package/platforms/libqxcb.so" : "Cannot load library /media/sf_Qt/Package/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5DBus.so.5: version `Qt_5' not found (required by ./libQt5XcbQpa.so.5))"
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: xcb.
Reinstalling the application may fix this problem.
Aborted (core dumped)
失敗したlibQt5DBus.so.5
ライブラリに注意してください。それをライブラリパスにコピーします。私の場合は、バイナリが存在するのと同じディレクトリでした(つまりLD_LIBRARY_PATH=.
)。すべての依存関係が満たされるまでこのプロセスを繰り返します。
PS この回答の作成者に感謝しQT_DEBUG_PLUGINS=1
ます。