web-dev-qa-db-fra.com

Comment installer un ARM cross-GCC toolchain fonctionnel sur Ubuntu 18.04 (Bionic Beaver)

Le contexte

J'ai récemment installé Ubuntu 18.04, Linux foobar-VirtualBox 4.15.0-23-generic #25-Ubuntu SMP Wed May 23 18:02:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux sur une machine virtuelle. Je souhaite compiler des applications pour les processeurs Cortex-M4F avec virgule flottante dure , et j'ai donc installé le package gcc-arm-none-eabi version 15:6.3.1+svn253039-1build1 aussi bien que libnewlib-arme-none-eabi à la version 2.4.0.20160527-3.

Problème

Il y a une erreur de l'éditeur de liens en raison d'un conflit entre mes fichiers objets utilisant des flotteurs durs et les bibliothèques utilisant des flotteurs souples. Certaines recherches indiquent qu'il s'agit d'un problème connu buntu 18.04 (Bionic Beaver):

Notez que je fournis les bons indicateurs du compilateur et de l'éditeur de liens, et que ce projet se construit correctement avec la chaîne d'outils croisée Windows de GNU ARM Embedded . Je pense que ce serait inutile de coller l'erreur complète ici. Si quelqu'un pense que ce serait nécessaire, je serais heureux de modifier cette question.

Ce que j'ai déjà essayé

D'après ma compréhension de base, j'ai deux solutions pour obtenir un GCC fonctionnel ARM toolchain:

  1. Rétrograder gcc-arm-none-eabi pour revenir à une version de travail
  2. Retirer gcc-arm-none-eabi et installez à la place gcc-arm-embedded de l'équipe GCC ARM PPA intégré ( Installer gcc-arm-embedded à partir du PPA )

Rétrograder gcc-arm-none-eabi, mais à quoi?

Afin de rétrograder gcc-arm-none-eabi Je dois trouver une version précédente dans mon gestionnaire de paquets. J'ai d'abord mis à jour la liste des packages avec Sudo apt update, puis j'ai tapé:

Sudo apt show gcc-arm-none-eabi

Paquet: gcc-arm-none-eabi
Version: 15: 6.3.1 + svn253039-1build1
Priorité: extra
Section: univers/développement
Origine: Ubuntu
Responsable: Développeurs Ubuntu
Mainteneur d'origine: Agustin Henze
Bogues: https://bugs.launchpad.net/ubuntu/+filebug
Taille installée: 307 Mo
Dépend de: libc6 (> = 2.15), libgcc1 (> = 1: 3.0), libgmp10, libisl15 (> = 0.15), libmpc3, libmpfr6 (> = 3.1.3), libstdc ++ 6 (> = 5), zlib1g (> = 1: 1.1.4), binutils-arm-none-eabi
Recommande: libnewlib-arm-none-eabi
Page d'accueil: http://gcc.gnu.org/
Taille du téléchargement: 24,3 Mo
APT-Sources: http://ch.archive.ubuntu.com/ubunt Bionic/univers AMD64 Packages
Description: compilateur croisé GCC pour ARM processeurs Cortex-A/R/M
Compilateur Bare Metal pour les puces embarquées ARM utilisant Cortex-M, Cortex-R et
Processeurs Cortex-A.
Ce package est basé sur la chaîne d'outils GNU ARM fournie par ARM.

Là, je ne vois aucune version précédente. Je pense qu'ils devraient être répertoriés ici, mais je ne le vois pas. Je ne peux pas rétrograder si je ne peux pas fournir la version précédente exacte vers laquelle je veux rétrograder.

Utiliser gcc-arm-embedded au lieu de gcc-arm-none-eabi

J'ai suivi les instructions données dans le lien ci-dessus, ce qui m'a conduit à ces commandes:

Sudo apt remove gcc-arm-none-eabi
Sudo apt-add-repository ppa:team-gcc-arm-embedded/ppa
Sudo apt update

[...] Ign: 4 http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubunt bionic InRelease
Obtenez: 5 http://security.ubuntu.com/ubunt bionic-security InRelease [83,2 kB]
Err: 6 http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubunt version bionique
404 introuvable [IP: 91.189.95.83 80]
Lecture des listes de packages ... Terminé
E: Le référentiel ' http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubunt bionic Release' n'a pas de fichier Release.
N: La mise à jour à partir d'un tel référentiel ne peut pas être effectuée en toute sécurité et est donc désactivée par défaut.
N: Voir la page de manuel apt-secure (8) pour la création du référentiel et les détails de configuration utilisateur.

Sudo apt-install gcc-arm-embedded

Lecture des listes de packages ... Terminé
Construction d'un arbre de dépendances
Lecture des informations d'état ... Terminé
E: Impossible de localiser le package gcc-arm-embedded

Fondamentalement, il semble que j'ai des problèmes d'accès au PPA. J'ai essayé le commutateur apt--allow-unauthenticated, mais cela n'a pas changé la sortie des commandes.

Question

Existe-t-il un moyen de faire fonctionner l'une de ces deux solutions, ou existe-t-il un autre moyen d'obtenir une chaîne d'outils GCC fonctionnelle sur Ubuntu 18.04 pour créer une application flottante pour le processeur Cortex-M4F?

(J'ai récemment publié ne question de débordement de pile sur ce problème, car à ce moment-là, je pensais que c'était un problème de chaîne d'outils pas si lié au monde Unix. Si j'obtiens une réponse ici Je vais le fermer et rediriger vers ce Q/A)

8
Tim

Vous pouvez télécharger une chaîne d'outils fonctionnelle depuis developer.arm.com et l'installer manuellement après avoir supprimé votre package gcc-arm-none-eabi existant.

Accédez à ce site Web, cliquez sur le bouton "Télécharger" et obtenez: gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2. Enregistrez-le dans votre répertoire personnel.

Assurez-vous d'avoir désinstallé les anciens packages Ubuntu.

Sudo apt remove binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi

Décompressez le nouveau package dans votre répertoire personnel:

tar -xjvf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2

Ajoutez la nouvelle chaîne d'outils à votre chemin:

export PATH=$PATH:/home/(your user)/gcc-arm-none-eabi-7-2018-q2-update/bin/

À ce stade, vous devriez avoir un ARM et une chaîne d'outils. (Pour les débutants Unix: si vous fermez le terminal et en ouvrez un nouveau, vous devrez réexécuter le export PATH afin que le compilateur soit récupéré à nouveau.)

5
user3486184