Napisałem aplikację dla systemu Linux, która korzysta z Qt5.
Ale kiedy próbuję uruchomić go na systemie Linux bez zainstalowanego pakietu Qt SDK, dane wyjściowe w konsoli są następujące:
Failed to load platform plugin "xcb". Available platforms are:
Jak mogę to naprawić? Może muszę skopiować plik wtyczki? Gdy używam Ubuntu z zainstalowanym Qt5, ale zmieniam nazwę katalogu Qt, pojawia się ten sam problem. Używa więc pliku z katalogu qt ...
Znalazłem plik libqxcb.so
w katalogu Qt SDK, ale umieszczenie go /usr/lib
nie pomaga.
plugins/platforms
celu/usr/bin
?platforms
Katalog zawiera biblioteki współdzielone,/usr/bin
służy do plików binarnych. Czy zawartość nie powinnaplatforms
iść/usr/lib
?/usr/bin/platforms
(nie wiem dlaczego). Ta odpowiedź zadziałała również dla mnie: stackoverflow.com/a/25437758/2249798Wszystkim przyszłym czytelnikom, którzy zetkną się z tym - zanim zaczniesz (niebezpiecznie) bawić się dowiązaniami symbolicznymi do bibliotek współdzielonych, zdecydowanie sugeruję uruchomienie
export QT_DEBUG_PLUGINS=1
a następnie uruchom ponownie swój uszkodzony plik wykonywalny w terminalu. Przeczytaj rzeczywisty komunikat o błędzie wyrzucony przez QT, ponieważ żadne z powyższych rozwiązań nie rozwiązało przyczyny tego błędu w moim przypadku.
Mój wynik po włączeniu
QT_DEBUG_PLUGINS
to:więc następnie googled
version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))
błąd i znaleźć rozwiązanie, które , co rozwiązało problem.źródło
Miałem ten komunikat o błędzie podczas próby uruchomienia „Stellarium”.
Dzięki strace odkryłem, że brakowało pliku
libxcb-xinerama.so.0
. Musiałem ponownie zainstalować,libxcb-xinerama0
aby działało:źródło
Spróbuj zainstalować
libqt5x11extras5
pakiet za pomocą polecenia:sudo apt-get install libqt5x11extras5
Nazwa może być inna. Możesz to rozwiązać, wyszukując:
sudo apt-cache search qt5 | grep 'X11 extras'
a jako wynik otrzymasz nazwę pakietu:
źródło
Uruchom ldd na pliku wykonywalnym aplikacji, aby zobaczyć, jak rozwiązuje zależności bibliotek.
Należy to również przeczytać, aby zrozumieć, jakie niezbędne biblioteki są potrzebne w prostym przypadku aplikacji GUI:
http://qt-project.org/doc/qt-5/linux-deployment.html
źródło
W moim typie ubuntu:
Może pracować
źródło
Dla tych, którzy nadal tkwią po wypróbowaniu każdej innej opcji w Internecie, możesz przyjrzeć się dokładnej ścieżce, z której ten notoryczny
libqxcb.so
jest przeszukiwany, w celu otwarcia / załadowania przezQt
aplikację ( w moim przypadkuVirtualBox-5.2.8
jest toQt
aplikacja), używając narzędzie strace . W moim przypadku, ponieważ budowałemVirtualBox-5.2.8
z jego źródła, szukałemlibqxcb.so
w poniższej lokalizacji:"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/"
a nie wdefault
ścieżkach biblioteki,Qt
ścieżce instalacji itp. Tak więc żadneldd
sprawdzenie i inne rozwiązania nie zadziałały. A także ustawienieQT_DEBUG_PLUGINS=1
nie wygenerowało żadnych dodatkowych dzienników.Uruchamianie strace na pliku binarnym VirtualBox, który zbudowałem przy użyciu Clang / LLVM na Ubuntu 17.10 x86_64:
To był mój
hitting-the-nail-on-its-head
moment i stworzyłemsymlink
z katalogu zainstalowanegoQt5.10.1
,platforms
wymienionego poniżej:"...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"
na przeszukiwaną ścieżkę"...VirtualBox-5.2.8/out/linux.amd64/release/bin/"
. Tak więc,VirtualBox-5.2.8
zbudowany ze źródła na Linux (Ubuntu 17.10 x86_64
) przy użyciuClang/LLVM
, wreszcie został pomyślnie uruchomiony !W rzeczywistości, kolejny ciekawy rzeczą jest to, że ja zbudowałem
VirtualBox-5.2.8
całkowicie używającClang/Clang++/LLVM
naUbuntu 17.10 x86_64
po znacznym wysiłku - dlaFreeBSD
, istnieje już port na budowęVirtualBox
używającclang
ale dla systemu Linux, jest silnie uzależniona odGCC
jak widziałem i dlatego zajęło dużo wysiłku, aby uzyskać do tego momentu, aby móc z powodzeniem budowaćVirtualBox-5.2.8
z jego źródła przy użyciuClang/Clang++/LLVM
onUbuntu 17.10 x86_64
for targetLinux/AMD64
(Ubuntu 17.10 x86_64
) i pomyślnie uruchamiać go po rozwiązaniu innych problemów wraz z tym notorycznymlibqxcb.so
.Twoje zdrowie.
źródło
W ten sposób rozwiązuje kilka problemów, gdy uruchamiam emulator na Ubuntu 18.04.
Dodaj następujące wiersze na końcu pliku. Instaluję mój zestaw SDK systemu Android na
/opt/Android/Sdk
źródło
Uruchomienie tego rozwiązało mi to:
źródło
Wygląda na to, że kryje się za tym wiele różnych rzeczy. W moim przypadku (Debian 9.7) QT_DEBUG_PLUGINS = 1 pomógł nam odnaleźć brakujące biblioteki i
$ sudo apt-get install libxcb-render-util0 libxcb-image0 libxcb-keysyms1 libxcb-icccm4
Rozwiązać problem.
źródło
Utwórz plik qt.conf w swoim projekcie i dodaj:
https://doc.qt.io/qt-5/qt-conf.html
źródło
Skopiuj
plugins/platforms/libqxcb.so
zqt
instalacji doplatforms/libqxcb.so
katalogu aplikacji.źródło