2017-07-10 3 views
1

J'essaie de compiler ma recette et de la lier aux bibliothèques de bras. J'utilise cmake. Je n'arrive pas à trouver le bon déroulement du travail, après avoir lu plusieurs documents sur le site yocto et les documents de référence. Mon approche est en ce moment:Intégration de l'application Yocto arm bitbake

  • Définir la source
  • bâtirai mon image cible minal, sans la couche que je veux utiliser
  • Essayez de construire ma recette spécifique: bitbake test

J'ai téléchargé le toolchain d'arm du site de Yocto, et l'ai préparé dans mes sources/poky. Ici, je peux voir les systroots et toutes les bibliothèques dont j'aurais besoin. Mon fichier recette bb est la suivante:

# This file was derived from the 'Hello World!' example recipe in the 
# Yocto Project Development Manual. 
# 

SUMMARY = "Project" 
SECTION = "examples" 
LICENSE = "MIT" 
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" 
SRC_URI = "file://." 

S = "${WORKDIR}/project/src" 

inherit pkgconfig cmake externalsrc 

Et mon dossier CMake contient, parmi plus:

link_directories(/media/traffic/Yocto/QorIQ-SDK-V2.0-20160527-yocto/sources/poky/sysroots/aarch64-poky-linux/usr/lib) 

Je suis en mesure de compiler un monde bonjour beau projet, mais dès que les bibliothèques externes prennent un rôle, ça va mal.

cannot find /usr/lib/libpthread_nonshared.a 

/media/traffic/Yocto/QorIQ-SDK-V2.0-20160527-yocto/build_ls2084abluebox/tmp/sysroots/x86_64-linux/usr/bin/aarch64-fsl-linux/../../libexec/aarch64-fsl-linux/gcc/aarch64-fsl-linux/4.9.3/ld: cannot find /usr/lib/libpthread_nonshared.a 

Il semble regarder dans le mauvais dossier. Les étapes que je suis en train de prendre sont-elles correctes? Ou ai-je oublié quelque chose?

Elmar

Répondre

1

Quelle version poky utilisez-vous? J'ai eu exactement le même problème récemment avec un autre paquet. Il y a 2 problèmes ici:

Il ne trouve pas la bibliothèque pThread. J'ai ajouté un FindThreads.cmake dans l'arbre et l'ai importé. Mais alors l'éditeur de liens n'a pas pu le faire. Je suis allé à la conclusion, cmake lui-même a eu un problème avec cette bibliothèque et a fini de changer le poky commit pour avoir une version différente de CMake. Notez que vous pouvez également conserver les nouvelles versions de poky et avoir le CMake personnalisé dans votre couche.

CMake 3.7 et 3.8.2 ne fonctionnaient pas correctement mais le 3.7.1 était pour moi (hash c9a512b6408d4cc11c1b36f7bc1b9b1c31056ce1). Pour en savoir qui engage, vous pouvez exécuter

git log --pretty=oneline | grep cmake:

+0

Merci pour votre commentaire! J'utilise la version 2.0 de poky distro. J'ai mis à jour mon CMake à la même version que vous avez. Cela a-t-il fonctionné pour vous après avoir défini la variable sysroot dans CMake? Ou avez-vous dû revenir à votre propre fichier FindThreads.cmake qui pointait vers le sysroot/usr/lib /? – Elamre

+0

J'ai supprimé le FIndThreads et simplement utilisé le cmake 3.7.1 –

+0

Était-ce l'erreur que vous aviez l'habitude d'obtenir avec CMake? - Impossible de trouver les threads (missing: Threads_FOUND) - N'a pas trouvé Threads (missing: Threads_FOUND) – Elamre