Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tutoriel:xcompile_arm [Le 21/11/2017, 17:50] – {{tag>tutoriel}} fabuxtutoriel:xcompile_arm [Le 01/12/2020, 07:36] (Version actuelle) fbo25
Ligne 2: Ligne 2:
 ----- -----
 ====== Compilation croisée (cross-compiling) pour architecture arm ====== ====== Compilation croisée (cross-compiling) pour architecture arm ======
 +
 +<note important>Les informations fournies après cet encadré sont obsolètes. Sur Groovy (et sans doute sur des versions antérieures), pour compiler pour une architecture arm, il suffit d'installer les paquets gcc-arm-linux-gnueabihf (architecture armhf) et/ou gcc-arm-linux-gnueabi (armel).
 +Si vous avez besoin de librairies ou d'en-têtes supplémentaires, un certain nombre d'entre eux sont sûrement déjà disponibles dans votre configuration actuelle et peuvent être installés directement (exemple libc6 pour armhf est disponible dans les paquets : libc6-armhf-cross et libc6-dev-armhf-cross).
 +
 +Cependant, si vous avez besoin d'une librairie non disponible de base, il faut modifier sa configuration apt et activer le "Multiarch". Procédure :
 +
 +Editer le fichier /etc/apt/sources.list ainsi que tous les fichiers dans /etc/apt/sources.list.d pour préciser la ou les architecture(s) **actuelle(s)** entre crochets. Il est inutile de le faire pour les "deb-src" (le code source n'a pas d'architecture). Exemple :
 +<file>
 +deb [arch=amd64,i386] http://xxxxxx groovy restricted main
 +deb [arch=amd64,i386] http://xxxxxx groovy-updates restricted main
 +deb-src http://xxxxxx groovy-updates universe multiverse restricted main
 +...
 +</file>
 +
 +Contrôler que tout va bien en lançant une mise à jour :
 +<file bash>sudo apt update</file>
 +
 +Ensuite, ajouter l'architecture souhaitée. Exemple pour ajouter une architecture armhf :
 +<file bash>sudo dpkg --add-architecture armhf</file>
 +
 +Créer le fichier qui va lister les sources pour la nouvelle architecture dans /etc/sources.list.d . Exemple :
 +<file bash>sudo vi /etc/apt/sources.list.d/ubuntu-armhf.list</file>
 +
 +Y ajouter la liste des sources en précisant l'architecture. Exemple pour armhf :
 +<file>
 +deb [arch=armhf] http://ports.ubuntu.com/ groovy main universe restricted
 +deb [arch=armhf] http://ports.ubuntu.com/ groovy-updates main universe restricted
 +deb [arch=armhf] http://ports.ubuntu.com/ groovy-backports main restricted
 +deb [arch=armhf] http://ports.ubuntu.com/ groovy-security main restricted
 +deb [arch=armhf] http://ports.ubuntu.com/ groovy-security universe
 +deb [arch=armhf] http://ports.ubuntu.com/ groovy-security multiverse
 +</file>
 +
 +Enregistrer et quitter l'éditeur puis lancer une actualisation de dépôts :
 +<file bash>sudo apt update</file>
 +
 +Vous pouvez désormais installer les paquets spécifiques à l'architecture en la précisant après le nom du paquet, séparé par un ":". Exemple pour installer le paquet libssl-dev pour l'architecture armhf :
 +<file bash>sudo apt install libssl-dev:armhf</file>
 +
 +Source : https://wiki.debian.org/fr/Multiarch/HOWTO
 +
 +Afin de construire des sources en C et Makefile pour une architecture armhf, en général, au lieu de "make" tout court, il suffit d'utiliser :
 +<file bash>make CC=arm-linux-gnueabihf-gcc</file>
 +
 +Pour des sources C++ :
 +<file bash>make CXX=arm-linux-gnueabihf-g++</file>
 +
 +----- Les informations fournies après cette ligne sont obsolètes -----------------------------
 +
 +</note>
 +
 +
 Ceci est un article détaillé de [[compilation_croisée]] pour architecture arm! L'article cité précédemment donne la plupart des indications nécessaires. Il y a juste une lacune et une erreur. Ceci est un article détaillé de [[compilation_croisée]] pour architecture arm! L'article cité précédemment donne la plupart des indications nécessaires. Il y a juste une lacune et une erreur.
 La lacune est qu'il faut installer les sources pour [[http://ftp.gnu.org/gnu/mpfr|MPFR]] et le bug est qu'il manque deux accolades dans un fichier source de gcc (4.4.1). La lacune est qu'il faut installer les sources pour [[http://ftp.gnu.org/gnu/mpfr|MPFR]] et le bug est qu'il manque deux accolades dans un fichier source de gcc (4.4.1).