11
votes

Une erreur de construction de bibliothèques QT pour la framboise PI

J'essaie de compiler les bibliothèques Qt 5 pour mon RPI, mais elle se bloque toujours.

Ce sont les guides que j'ai essayés de suivre:

http://qt-project.org/wiki/raspberrypi_beginners_guide
http://qt-project.org/wiki/raspberrypi

i ont téléchargé le compilateur croisé et la sysroot-image en fonction du guide et ont tiré les sources QT5 du repo git.

Après avoir suivi l'un des guides que je suis maintenant bloqué à faire .

Ceci est l'erreur que je reçois: xxx


0 commentaires

5 Réponses :


12
votes

Fixez les chemins des bibliothèques dans votre sysroot. Certaines bibliothèques sont des liens avec des chemins absolus qui sont brisés lorsqu'ils sont placés dans votre système. Vérifiez quelque chose comme /home/esa/qtonpi/rpi_image/usr/lib/arm-linux-gnueabihf/libdl.so ou similaire. Vous devriez voir que ce sont des symboles brisés sur des chemins absolus. Réparer tous ceux-ci. Dans les documents que vous avez signalés, un script à cette fin est fourni. L'avez-vous dirigé ( https://gitorious.org/ Outils croisés / outils croisés / outils croisés / blobs / Master / FixqualifiedLibraryPaths )?

Essayez aussi de vérifier Ceci < / a> Si vous rencontrez toujours des problèmes: j'ai écrit quelques notes compilant une version récente de la GIT pour l'image Wheezyzy.


4 commentaires

Merci. J'avais déjà rencontré desquelsChanchibraryPathes, mais sur une autre sysrotation! Je ne pouvais pas comprendre que je ne l'avais pas couru sur celui-ci ...


J'ai eu un problème différent: 1 / J'ai construit mon propre compilateur croisé, mais j'ai oublié d'indiquer qu'il est requis C ++, 2 / cogné dans la ne pas avoir un compilateur C ++, puis découvert qu'un paquet de compilateur croisé est disponible ici: github.com/raspberrypi/tools , 3 / je n'ai pas couru ./fixqualifiedLibraryPaths à nouveau fonctionnant correctement dans La première place mais malheureusement n'a pas produit de message d'erreur.


J'ai également utilisé le même lien que l'OP, et j'exécute fixqualifiedLibraryPaths , mais il n'a trouvé aucun chemin à réparer. Il n'y a pas de libdl et libm du tout dans mon / mnt / rasp-pi-rootfs / usr / lib /


Alors ... probablement c'est le problème?



1
votes

Ceci pourrait être parce que libdl.so et libm.so est absent de votre local rootfs / usr / lib / arrach-linux-gnuebihf Répertoire (il n'y a que libdl.a et libm.a ). Copier les deux fichiers de la Raspberry PI devrait rendre la compilation réussie.


1 commentaires

Ouais, pour les nouveaux arrivants, la publication des réponses est la seule solution possible cependant. Il est temps d'obtenir un représentant afin que vous puissiez commencer à commenter :)



3
votes

Une réponse à ceux qui ont essayé à la fois des réponses existantes et ils n'ont pas fonctionné:

Il pourrait arriver que l'image fraspbian que vous téléchargée ne contienne pas de symboles pour libdl et libdm dans le / usr / libdm / code> dossier. p>

Dans ce cas, lesquelsChandiChibraryPaths ne vous aideront pas comme il ne peut pas trouver les symboles. Copie libdl.so code> et libm.so code> peut également échouer, par exemple, si vous utilisez un lecteur flash pour copier des données de votre PI de framboise existante, il ne les copiera pas. comme symboles, mais copiera les bibliothèques elles-mêmes. Cependant, pour que la construction réussisse, il semble nécessiter des liens symboliques. P>

J'ai regardé ce que libdl code> et libdm code> dans le / usr / Dossier lib / code> de mon point PI de framboise à p> xxx pré>

Faites de même pour les fichiers trouvés jusqu'à ce qu'ils ne soient plus symboles, mais des fichiers normaux. P> sur mon système, il s'est avéré qu'ils sont appelés libdl-2.13.so code> et libm-2.13.so code> et résident dans / lib / bras-linux-gnuebihf / code> au lieu de / usr / lib /... p>

retour sur mon PC, j'ai trouvé ces fichiers exacts dans le / lib / z Dossier Linux-Gnueabihf / Code> (Si vous ne les trouvez pas, vous pouvez les copier de votre PI de framboise). J'ai donc créé des liens symboliques pour eux dans le dossier / USR / UR / UR / LIB / ARM-LINUX-GNUEABIBHF / P>

sudo ln -s /lib/arm-linux-gnueabihf/libdl-2.13.so /usr/lib/arm-linux-gnueabihf/libdl.so
sudo ln -s /lib/arm-linux-gnueabihf/libm-2.13.so /usr/lib/arm-linux-gnueabihf/libm.so


0 commentaires

2
votes

Essayez ceci xxx

essentiellement, il semble que le ou les chemins absolus ont été spécifiés lorsque les fichiers de la section "code> PI étaient liés (/ lib /) , et donc dans le / mnt / raspberrine-rootfs ils sont cassés.

lier le / lib / bras-linux-gnuabihf de PI < / Code> au répertoire / LIB de PC corrige le mauvais lien et permet à QT de compiler. C'est un tour sale, mais ça marche.

Si vous n'avez pas libdl / libm sur le PI , alors vous devez coller la carte SD retour dans le PI , démarrez et installez-les. Évidemment, vous devrez créer une nouvelle image sur le PC à partir de la carte SD et monter sur / mnt / raspberry-rootfs


0 commentaires

1
votes

au lieu de FixQualifiedLibraryPaths Utilisez:

cd <folder-with-sysroot-subfolder>
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/script/sysroot-relativelinks.py
chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot


0 commentaires