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 13/02/2010, 22:50]
213.95.41.13
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_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 6: Ligne 60:
 <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>​ <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>​
  
-===== Scripte ​=====+===== 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.1266097824.txt.gz
  • Dernière modification: Le 18/04/2011, 14:51
  • (modification externe)