qt가 설치되지 않은 Linux에서 qt5 앱을 시작하는 동안“플랫폼 플러그인”xcb“를로드하지 못했습니다


22

Qt5를 사용하는 Linux 용 응용 프로그램을 작성했습니다.

그러나 Qt SDK가 설치되지 않은 Linux에서 실행하려고하면 콘솔의 출력은 다음과 같습니다.

Failed to load platform plugin "xcb". Available platforms are:

이 문제를 어떻게 해결할 수 있습니까? 플러그인 파일을 복사해야합니까? Qt5가 설치된 상태에서 Ubuntu를 사용하지만 Qt 디렉토리의 이름을 바꾸면 동일한 문제가 발생합니다. 따라서 qt 디렉토리의 일부 파일을 사용합니다 ...

libqxcb.soQt SDK 디렉토리 에서 파일 을 찾았 지만 배치해도 /usr/lib도움이되지 않습니다.

답변:


12

올바른 솔루션은 다음 명령을 터미널에서 실행 중입니다.

sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/ /usr/bin/

누락 된 심볼릭 링크를 만듭니다.


1
이것은 나를 위해 문제를 해결했습니다.
Pratik Singhal

3
왜 파일에 링크 할 plugins/platforms/usr/bin? platforms디렉토리가 공유 라이브러리를 포함하고, /usr/bin바이너리 파일에 사용됩니다. 내용이 platforms들어가서는 안 /usr/lib됩니까?
Nathan F.

@NathanF. 적어도 내 설치의 경우 Qt 로더는 플랫폼을 검색합니다 /usr/bin/platforms(왜 그런지 모르겠습니다). 따라서이 답변은 나를 위해 일했습니다 : stackoverflow.com/a/25437758/2249798
m13r

12

공유 라이브러리에 대한 심볼릭 링크로 (위험하게) 엉망으로 시작하기 전에이 문제를 겪는 미래의 독자들에게 다음을 실행하는 것이 좋습니다.

export QT_DEBUG_PLUGINS=1

그런 다음 터미널에서 실패한 실행 파일을 다시 실행하십시오. 위의 해결책 중 어느 것도 내 경우 에이 오류의 원인을 해결하지 못했기 때문에 QT에 의해 발생한 실제 오류 메시지를 읽으십시오.

전원을 켠 후 내 출력 QT_DEBUG_PLUGINS은 다음과 같습니다.

QFactoryLoader::QFactoryLoader() checking directory path "/opt/PostgreSQL/9.6/pgAdmin 4/bin/platforms" ...
loaded library "/opt/PostgreSQL/9.6/pgAdmin 4/plugins/platforms/libqxcb.so"
QLibraryPrivate::loadPlugin failed on "/opt/PostgreSQL/9.6/pgAdmin 4/plugins/platforms/libqxcb.so" : "Cannot load library /opt/PostgreSQL/9.6/pgAdmin 4/plugins/platforms/libqxcb.so: (/opt/PostgreSQL/9.6/lib/libz.so.1: version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))"
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Available platform plugins are: xcb.

Reinstalling the application may fix this problem.
Aborted (core dumped)

그래서 나는 그 version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))오류 를 googled하고 그것에 대한 해결책을 찾았다 .


2
누가 당신에게 투표했는지 모르겠습니다. 이것은 내 특정 상황과 관련된 실제 오류를 찾는 데 필요한 추적을 제공했습니다 (내 경우에는 libc ++. so가 누락되어 libc ++-dev에서 설치해야했습니다 ").
HBSKan

11

"Stellarium"을 실행하려고 할 때이 오류 메시지가 나타납니다.

strace로 누락 된 파일이임을 알았습니다 libxcb-xinerama.so.0. libxcb-xinerama0작동 하도록 다시 설치 해야했습니다.

sudo apt-get install --reinstall libxcb-xinerama0

와우, 이것은 다양한 재설치를 시도한 사냥의 혼란입니다. 정말 감사합니다.
Hendy

이것은 도움이되었다! !! 감사합니다
trsvchn

6

다음 libqt5x11extras5명령 을 사용하여 패키지 를 설치하십시오 .
sudo apt-get install libqt5x11extras5

이름이 다를 수 있습니다. 다음을 검색하여 알아낼 수 있습니다.
sudo apt-cache search qt5 | grep 'X11 extras'

그리고 결과로 패키지 이름을 얻습니다.

libqt5x11extras5 -Qt 5 X11 엑스트라



2

내 우분투 유형에서 :

sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/ /usr/bin/platforms

일할 수있다


1
이것은 좋은 대답이 아닙니다. 해당 명령이 정확히 수행하는 작업을 설명하도록 편집하십시오.
당신은 AGitForNotUsingGit

나를 위해 일하지 않았다
Ratbert

2

여전히 인터넷에 거기 밖으로 다른 모든 옵션을 시도한 후 붙어있는 사람들을 위해,이되는 정확한 경로로 볼 수 악명이 libqxcb.so 오프닝에서 검색되고 / 바이로드 Qt앱은 ( VirtualBox-5.2.8는 IS Qt를 사용하여, 내 경우에는 응용 프로그램) strace 도구. 필자의 경우 VirtualBox-5.2.8소스에서 빌드했기 때문에 라이브러리 경로, 설치 경로 등이 아닌 libqxcb.so아래 위치에서 검색했습니다 . 따라서 검사 및 기타 솔루션이 작동 하지 않았습니다 . 또한 설정 하면 추가 로그가 생성되지 않았습니다.
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/"defaultQtlddQT_DEBUG_PLUGINS=1

Ubuntu 17.10 x86_64에서 Clang / LLVM을 사용하여 빌드 한 VirtualBox 바이너리에서 strace 실행 :

...VirtualBox-5.2.8$ strace ./out/linux.amd64/release/bin/VirtualBox

.
.
.
access(".../VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/.", F_OK) = -1 ENOENT (No such file or directory)
write(2, "Qt FATAL: ", 10Qt FATAL: )              = 10
write(2, "This application failed to start"..., 154This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Reinstalling the application may fix this problem.) = 154
.
.
.

그건 내이었다 hitting-the-nail-on-its-head순간, 나는 생성 된 symlink설치에서 Qt5.10.1platforms아래에 언급 한 디렉토리 : "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"(가)입니다 경로를 검색에 "...VirtualBox-5.2.8/out/linux.amd64/release/bin/". 따라서를 사용하여 VirtualBox-5.2.8Linux ( Ubuntu 17.10 x86_64)의 소스에서 빌드되고 Clang/LLVM마침내 성공적 으로 시작되었습니다 !

사실, 여기에 또 다른 재미있는 것은 그렇게, 난 내장 한 VirtualBox-5.2.8완전히 사용 Clang/Clang++/LLVMUbuntu 17.10 x86_64상당한 노력 -을 위해 FreeBSD, 구축을위한 포트 이미 거기에 VirtualBox사용 clang하지만, 리눅스 용, 그것은에 크게 의존의 GCC가하려면 많은 노력을했다 따라서 I 톱으로하고 이 시점에서 on for target ( )을 VirtualBox-5.2.8사용하여 소스에서 성공적으로 빌드 하고이 악명 높은 문제와 함께 다른 문제를 해결 한 후 성공적으로 시작할 수 있습니다.Clang/Clang++/LLVMUbuntu 17.10 x86_64Linux/AMD64Ubuntu 17.10 x86_64libqxcb.so

건배.


1

이것이 Ubuntu 18.04에서 에뮬레이터를 실행할 때 몇 가지 문제를 해결하는 방법입니다.

$ vim ~ / .bashrc

파일 끝에 다음 줄을 추가하십시오. 에 Android SDK를 설치합니다/opt/Android/Sdk

export ANDROID_HOME=/opt/Android/Sdk
export ANDROID_SDK_ROOT=/opt/Android/Sdk
export ANDROID_AVD_HOME=/home/<your name>/.android/avd
export LD_LIBRARY_PATH="/opt/Android/Sdk/emulator/lib64:$LD_LIBRARY_PATH"
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins

1

이것을 실행하면 나에게 해결되었습니다.

sudo apt-get --reinstall install libqt5dbus5 \
libqt5widgets5 libqt5network5 libqt5gui5 libqt5core5a \
libdouble-conversion1 libxcb-xinerama0

0

이 뒤에 누락 된 다양한 것들이있을 수 있습니다. 필자의 경우 (Debian 9.7), QT_DEBUG_PLUGINS = 1은 누락 된 라이브러리를 추적하는 데 도움이되었습니다.

$ sudo apt-get 설치 libxcb-render-util0 libxcb-image0 libxcb-keysyms1 libxcb-icccm4

문제를 해결했다.



-3

설치 에서 애플리케이션 디렉토리 로 복사 plugins/platforms/libqxcb.so하십시오 .qtplatforms/libqxcb.so

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.