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 27/08/2012, 11:50] – [Script] schhubtutoriel:xcompile_arm [Le 01/12/2020, 07:36] (Version actuelle) fbo25
Ligne 1: Ligne 1:
 +{{tag>tutoriel compilation programmation}}
 +-----
 ====== Compilation croisée (cross-compiling) pour architecture arm ====== ====== Compilation croisée (cross-compiling) pour architecture arm ======
-Ceci est un article détaillé de [[compilation_croisée]] pour architecture arm! L'article cité précédemment donne la plus part des indications nécessaires. Il y a juste une lacune et une erreur.+ 
 +<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.
 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).
 Pour vous faciliter la tâche et vous permettre de boire un café de plus aujourd'hui, je vous présente un petit script qui télécharge, compile et installe le tout tout seul. Pour vous faciliter la tâche et vous permettre de boire un café de plus aujourd'hui, je vous présente un petit script qui télécharge, compile et installe le tout tout seul.
Ligne 7: Ligne 61:
  
 ===== Script ===== ===== Script =====
 +<file bash>
   #!/bin/bash   #!/bin/bash
      
Ligne 55: Ligne 110:
   rm -f gcc-4.4.3.tar.bz2   rm -f gcc-4.4.3.tar.bz2
   rm -f mpfr-2.4.2.tar.bz2   rm -f mpfr-2.4.2.tar.bz2
-   +</file> 
- +Il vous faudra éventuellement [[:tutoriel:comment_installer_un_paquet|installer deux paquets]] supplémentaires AVANT de relancer cette installation si celle-ci échoue à savoir : 
- +  * s'il vous manque gmp => **[[apt>lib32gmp3-dev]]** 
-Il vous faudra éventuellement installer deux paquets supplémentaires AVANT de relancer cette installation si celle-ci échoue à savoir : +  * s'il vous manque MPC  => **[[apt>libmpc-dev]]**
-  * s'il vous manque gmp => apt-get install lib32gmp3-dev +
-  * s'il vous manque MPC  => apt-get install libmpc-dev+
 relancez le script et tout devrait s'achever correctement. relancez le script et tout devrait s'achever correctement.