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édentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:xcompile_arm [Le 12/02/2010, 09:27]
scholi faute de français
tutoriel: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_croisee]] pour architecture arm! L'​article cité précédemment donne la plus part des indications nécessaire. Il y a juste une lacune et une erreur. 
-La lacune et qu'il faut installer les sources pour [[http://​ftp.gnu.org/​gnu/​mpfr|MPFR]] et le bug et qu'il manque deux accolade 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 scripte qui télécharge,​ compile et install le tout tout seul. 
  
-<​note ​tip>Le scripte utilise ​des sudo pour les make installAffin de vous demander le mot de passe tout au début pour que vous puissiez aller boir un café tranquilement, un sudo echo et placé en tête.</​note>​+<​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).
  
-===== Scripte ​=====+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). 
 +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. 
 + 
 +<note tip>Le script utilise des sudo pour les make install. Afin de vous demander le mot de passe tout au début pour que vous puissiez aller boire un café tranquillement,​ un sudo echo est placé en tête.</​note>​ 
 + 
 +===== Script ===== 
 +<file bash>
   #!/bin/bash   #!/bin/bash
   ​   ​
Ligne 14: Ligne 69:
   ### BINUTILS   ### BINUTILS
   ​   ​
-  wget http://​ftp.gnu.org/​gnu/​binutils/​binutils-2.20.tar.bz2 +  wget http://​ftp.gnu.org/​gnu/​binutils/​binutils-2.20.1.tar.bz2 
-  tar xvf binutils-2.20.tar.bz2 +  tar xvf binutils-2.20.1.tar.bz2 
-  cd binutils-2.20 +  cd binutils-2.20.1
-   +
-  cd gas/​config +
-  cat <<END >tc-arm.patch +
-  --- tc-arm.c ​   2009-08-30 00:​10:​59.000000000 +0200 +
-  +++ fix_tc-arm.c ​       2010-02-11 13:​46:​23.541598748 +0100 +
-  @@ -2486,8 +2486,10 @@ +
-         ​frag->​tc_frag_data.first_map = symbolP; +
-       } +
-     if (frag->​tc_frag_data.last_map != NULL) +
-  +    { +
-       know (S_GET_VALUE (frag->​tc_frag_data.last_map) < S_GET_VALUE (symbolP));​ +
-     ​frag->​tc_frag_data.last_map = symbolP; +
-  +    } +
-   } +
-    +
-   /* We must sometimes convert a region marked as code to data during +
-  END +
-  patch -p0 tc-arm.c tc-arm.patch +
-  cd -+
   ​   ​
   ./configure --target=arm-linux   ./configure --target=arm-linux
Ligne 74: 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]]**
 +  * s'il vous manque MPC  => **[[apt>​libmpc-dev]]**
 +relancez le script et tout devrait s'​achever correctement.
  • tutoriel/xcompile_arm.1265963235.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)