Ein Fehler Gebäudes Qt-Bibliotheken für den raspberry pi
Ich versuche zu kompilieren der Qt-5-Bibliotheken für meine RPI, aber es immer abstürzt.
Diese sind die guides, die ich versucht haben, zu Folgen:
http://qt-project.org/wiki/RaspberryPi_Beginners_guide
http://qt-project.org/wiki/RaspberryPi
Heruntergeladen habe ich den cross-compiler und sysroot-Bild nach der Führung gezogen und die Qt5-Quellen aus dem git repo.
Nachdem Sie einen der guides, die ich jetzt bin stecken in make
.
Dies ist die Fehlermeldung die ich erhalte:
.obj/release-shared/qlibrary_unix.o: In function `QLibraryPrivate::load_sys()':
qlibrary_unix.cpp:(.text+0xf84): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/home/esa/qtonpi/rpi_image/usr/lib/arm-linux-gnueabihf/libdl.a(dlopen.o): In function `dlopen':
(.text+0xc): undefined reference to `__dlopen'
/home/esa/qtonpi/rpi_image/usr/lib/arm-linux-gnueabihf/libdl.a(dlclose.o): In function `dlclose':
(.text+0x0): undefined reference to `__dlclose'
/home/esa/qtonpi/rpi_image/usr/lib/arm-linux-gnueabihf/libdl.a(dlsym.o): In function `dlsym':
(.text+0xc): undefined reference to `__dlsym'
/home/esa/qtonpi/rpi_image/usr/lib/arm-linux-gnueabihf/libdl.a(dlerror.o): In function `dlerror':
(.text+0x0): undefined reference to `__dlerror'
/home/esa/qtonpi/rpi_image/usr/lib/arm-linux-gnueabihf/libm.a(feholdexcpt.o): In function `feholdexcept':
(.text+0x48): undefined reference to `_dl_hwcap'
/home/esa/qtonpi/rpi_image/usr/lib/arm-linux-gnueabihf/libm.a(fesetenv.o): In function `fesetenv':
(.text+0x64): undefined reference to `_dl_hwcap'
collect2: virhe: ld:n paluuarvo oli 1 # collect2: error: ld returnvalue was 1
make[2]: *** [../../lib/libQt5Core.so.5.0.0] Virhe 1 # Error 1
make[2]: Poistutaan hakemistosta "/home/esa/qtonpi/qt5/qtbase/src/corelib" # Leaving directory
make[1]: *** [sub-corelib-make_first] Virhe 2 # Error 2
make[1]: Poistutaan hakemistosta "/home/esa/qtonpi/qt5/qtbase/src" # Leaving directory
make: *** [sub-src-make_first] Virhe 2 # Error 2
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update die Pfade der Bibliotheken in den sysroot. Einige Bibliotheken sind symlinks auf absolute Pfade, die aufgehoben werden, wenn in Ihrem system. Überprüfen Sie so etwas wie /home/esa/qtonpi/rpi_image/usr/lib/arm-linux-gnueabihf/libdl.so oder so ähnlich. Sie sollten sehen, diese sind broken symlinks zu absoluten Pfaden. Fix ist alles möglich. In den Unterlagen, die Ihnen gemeldet, ein Skript für diesen Zweck vorgesehen ist. Haben Sie Sie ausführen (https://gitorious.org/cross-compile-tools/cross-compile-tools/blobs/master/fixQualifiedLibraryPaths)?
Versuchen Sie auch zu überprüfen, diese wenn Sie immer noch Probleme: ich schrieb einige Notizen zusammenstellen, eine aktuelle version aus dem git für die wheezy-image.
fixQualifiedLibraryPaths
, aber es fand keine Wege zu beheben. Es gibt keinelibdl
undlibm
bei meinem/mnt/rasp-pi-rootfs/usr/lib/
Versuchen, diese
Grundsätzlich scheint es, dass der absolute Pfad(s) angegeben wurden, wenn die Dateien so auf der
Pi
verbunden waren(/lib/)
, und daher in der/mnt/raspberry-rootfs
Sie gebrochen sind.Verknüpfung des Pi 's
/lib/arm-linux-gnueabihf
des Pc' s/lib
Verzeichnis behebt das falsch verknüpfen und ermöglicht QT zu kompilieren. Es ist ein schmutziger trick, aber es funktioniert.Wenn Sie nicht über
libdl/libm
auf diePi
, dann müssen Sie halten Sie die SD-Karte wieder in denPi
Booten und installieren. Natürlich müssen Sie erstellen Sie ein neues Bild auf dem PC von der SD-Karte und montieren Sie es auf/mnt/raspberry-rootfs
Antwort für diejenigen, die versucht, sowohl die vorhandenen Antworten, und Sie hat nicht funktioniert:
Kann es passieren, dass das Raspbian image heruntergeladen Sie nicht enthalten symlinks für die libdl und libdm in der
/usr/lib/
Ordner.In diesem Fall die fixQualifiedLibraryPaths wird Ihnen nicht helfen, als Sie es nicht finden können, die symlinks. Kopieren
libdl.so
undlibm.so
könnte auch scheitern, zum Beispiel, wenn Sie ein flash-Laufwerk, und kopieren Sie die Daten aus Ihrer vorhandenen Raspberry Pi, es werde nicht kopieren Sie als symbolische Links, doch das kopieren der Bibliotheken selbst. Aber für das build erfolgreich ist, wird es zu verlangen scheint symlinks.Ich sah, was
libdl
undlibdm
im/usr/lib/
Ordner von meinem Raspberry Pi Punkt, anMachen Sie dasselbe für die gefundenen Dateien, bis Sie nicht mehr symlinks, sondern normale Dateien.
Auf meinem system stellte sich heraus, dass Sie genannt
libdl-2.13.so
undlibm-2.13.so
und befinden sich in/lib/arm-linux-gnueabihf/
statt/usr/lib/...
Zurück zu meinem PC, fand ich genau diese Dateien in der
/lib/arm-linux-gnueabihf/
Ordner (wenn Sie nicht finden können, können Sie kopieren Sie Sie aus Ihrem Raspberry Pi). Also ich erstellte symlinks für Sie in der/usr/lib/arm-linux-gnueabihf/
Ordner :Danach qtbase wurde erfolgreich kompiliert wurde.
Dafür könnte sein, dass
libdl.so
undlibm.so
fehlen von Ihrem lokalenrootfs/usr/lib/arm-linux-gnueabihf
- Verzeichnis (es gibt nurlibdl.a
undlibm.a
). Kopieren Sie die beiden Dateien aus dem Raspberry Pi machen sollte die Kompilierung erfolgreich.statt fixQualifiedLibraryPaths verwenden: