qt가 설치되지 않은 Linux에서 qt5 앱을 시작하는 동안“플랫폼 플러그인”xcb“를로드하지 못했습니다 문제를 어떻게 해결할 수 있습니까? 플러그인 파일을

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

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

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

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

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



답변

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

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

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


답변

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

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하고 그것에 대한 해결책을 찾았다 .


답변

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

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

sudo apt-get install --reinstall libxcb-xinerama0


답변

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

sudo apt-get install libqt5x11extras5

이름이 다를 수 있습니다. 다음을 검색하여 알아낼 수 있습니다.

sudo apt-cache search qt5 | grep 'X11 extras'

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

libqt5x11extras5 -Qt 5 X11 엑스트라


답변

애플리케이션 실행 파일에서 ldd를 실행하여 라이브러리 종속성을 해결하는 방법을 확인하십시오.

또한 이것은 간단한 GUI 응용 프로그램에서 필요한 필수 라이브러리를 이해하기 위해 반드시 읽어야합니다.

http://qt-project.org/doc/qt-5/linux-deployment.html


답변

내 우분투 유형에서 :

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

일할 수있다


답변

여전히 인터넷에 거기 밖으로 다른 모든 옵션을 시도한 후 붙어있는 사람들을 위해,이되는 정확한 경로로 볼 수 악명이 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

건배.