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:compilation_croisee [Le 17/02/2008, 21:06]
johndescs des détails qui tuent --
tutoriel:compilation_croisee [Le 11/09/2022, 12:19] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 6: Ligne 6:
 La compilation croisée ou «cross-compilation» en anglais permet de créer des exécutables depuis une certaine architecture pour une autre (Linux 32bits / 64bits mais aussi windows...). Cela permet de créer des paquets pour des systèmes que nous n'​avons pas sous la main ! La compilation croisée ou «cross-compilation» en anglais permet de créer des exécutables depuis une certaine architecture pour une autre (Linux 32bits / 64bits mais aussi windows...). Cela permet de créer des paquets pour des systèmes que nous n'​avons pas sous la main !
  
-Pour cela, nous allons commencer par compiler... un compilateur ! Mais attention, il sera BRUT c'​est-à-dire sans aucune bibliothèque. On pourra alors compiler le kernel Linux ou une bibliothèque. Exception : le compilateur pour Windows(r) existe en paquets, pas besoin de le re-compiler... sauf par excès de zèle.+Pour cela, nous allons commencer par compiler... un compilateur ! Mais attention, il sera BRUT c'​est-à-dire sans aucune bibliothèque. On pourra alors compiler le kernel Linux ou une bibliothèque.
  
 +Exceptions : le compilateur pour Windows(r) existe en paquets, pas besoin de le re-compiler,​ [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt>​mingw-w64]]**. Pour linux 32 bits vers 64 et vice-versa, il existe aussi des paquets : lib64(32)gcc1 et libc6-dev-amd64(i386). Il suffit de les installer pour aboutir à l'​équivalent de ce que nous allons faire ici à la main. 
 +
 +Pour la compilation croisée vers une architecture arm un petit script vous est présenté dans l'​article [[Xcompile_arm|Compilation croisée pour ARM]]
  
 ===== Prérequis ===== ===== Prérequis =====
Ligne 13: Ligne 16:
 Avoir jeté un oeil sur la page traitant de la compilation standard : [[tutoriel:​compilation]]. Avoir jeté un oeil sur la page traitant de la compilation standard : [[tutoriel:​compilation]].
  
-Si vous vouler compiler pour Windows(r), ​vous avez de la chance, tout existe en paquets : c'est le **Mingw32**. Il vous suffira de l'​installer simplement. +Si vous vouler compiler pour Windows(r) ​ou pour un 32/64 bits croisé
-Rendez-vous à la rubrique utilisation...+rendez-vous à sur la page [[tutoriel:​comment_utiliser_mingw32_pour_faire_des_executables_windows|Comment utiliser MingW[32|64] pour faire des exécutables Windows ?]]
  
 Avoir téléchargé les sources de **[[http://​ftp.gnu.org/​gnu/​binutils/​|binutils]]** et **[[http://​ftp.gnu.org/​gnu/​gcc/​|gcc]]**. Prendre la dernière version ne devrait pas faire de mal. Avoir téléchargé les sources de **[[http://​ftp.gnu.org/​gnu/​binutils/​|binutils]]** et **[[http://​ftp.gnu.org/​gnu/​gcc/​|gcc]]**. Prendre la dernière version ne devrait pas faire de mal.
Ligne 21: Ligne 24:
  
 Le compilateur comporte deux parties : les binutils et gcc. On commence avec les binutils qui comportent les outils de gestion comme **ld** ou **ar**. Le compilateur comporte deux parties : les binutils et gcc. On commence avec les binutils qui comportent les outils de gestion comme **ld** ou **ar**.
 +
  
 ==== Les binutils ==== ==== Les binutils ====
Ligne 26: Ligne 30:
 Décompresser l'​archive téléchargée précédemment et aller dans le dossier créé. Décompresser l'​archive téléchargée précédemment et aller dans le dossier créé.
  
-== configuration ==+=== configuration ​===
  
 Configurer la compilation avec la commande : Configurer la compilation avec la commande :
-  ./configure --target=x86-64-pc-linux+  ./configure --target=x86_64-pc-linux
  
 L'​option "​target"​ permet de choisir l'​architecture de destination. Ici on aura un compilateur pour l'​architecture 64 bits. Remplacer le x86_64 par ce que l'on souhaite produire. L'​option "​target"​ permet de choisir l'​architecture de destination. Ici on aura un compilateur pour l'​architecture 64 bits. Remplacer le x86_64 par ce que l'on souhaite produire.
Ligne 35: Ligne 39:
 On peut utiliser l'​option "​prefix"​ pour configurer le dossier de base de l'​installation mais étant donné que les exécutables créés seront tous précédés de l'​architecture voulue, on peut tranquillement les mettre avec les autres sinon il faudrait configurer le PATH pour savoir où les chercher. On peut utiliser l'​option "​prefix"​ pour configurer le dossier de base de l'​installation mais étant donné que les exécutables créés seront tous précédés de l'​architecture voulue, on peut tranquillement les mettre avec les autres sinon il faudrait configurer le PATH pour savoir où les chercher.
  
-== compilation ==+=== compilation ​===
  
 Il suffit de lancer la commande : Il suffit de lancer la commande :
   make all   make all
  
-== installation ==+=== installation ​===
  
 Avec les droits super-utilisateur si on veut installer dans les parties système (option "​prefix"​) : Avec les droits super-utilisateur si on veut installer dans les parties système (option "​prefix"​) :
   make install   make install
 +
  
 ==== gcc : "GNU Compiler Collection",​ groupement de compilateurs GNU ==== ==== gcc : "GNU Compiler Collection",​ groupement de compilateurs GNU ====
Ligne 49: Ligne 54:
 Décompresser l'​archive téléchargée précédemment et aller dans le dossier créé. Décompresser l'​archive téléchargée précédemment et aller dans le dossier créé.
  
-== configuration ==+=== configuration ​===
  
 Configurer la compilation avec la commande : Configurer la compilation avec la commande :
-  ./configure --enable-languages=c --disable-threads --disable-shared --disable-checking --prefix=/​usr --mandir=/​usr/​share/​man --infodir=/​usr/​share/​info --target=x86-64-pc-linux+  ./configure --enable-languages=c --disable-threads --disable-shared --disable-checking --prefix=/​usr --mandir=/​usr/​share/​man --infodir=/​usr/​share/​info --target=x86_64-pc-linux
  
 L'​option "​target"​ permet de choisir l'​architecture de destination. Ici on aura un compilateur pour l'​architecture 64 bits. Remplacer le x86_64 par ce que l'on souhaite produire. L'​option "​target"​ permet de choisir l'​architecture de destination. Ici on aura un compilateur pour l'​architecture 64 bits. Remplacer le x86_64 par ce que l'on souhaite produire.
Ligne 58: Ligne 63:
 Si on veut le C++, il faut le rajouter aux langages, après c : --enable-languages=c,​c++ Si on veut le C++, il faut le rajouter aux langages, après c : --enable-languages=c,​c++
  
-== compilation ==+=== compilation ​===
  
 Il suffit de lancer la commande : Il suffit de lancer la commande :
   make all-gcc   make all-gcc
  
-== installation ==+=== installation ​===
  
 Avec les droits super-utilisateur si on veut installer dans les parties système (option "​prefix"​) : Avec les droits super-utilisateur si on veut installer dans les parties système (option "​prefix"​) :
Ligne 75: Ligne 80:
 ===== Utilisation ===== ===== Utilisation =====
  
-Donner ​l'​option "​--arch=xxxxxx"​ où xxxxxx est le préfixe des commandes de compilateur à make. Dans l'​exemple précédent,​ on aura donc : "​--arch=x86_64"​. On peut aussi donner ​la [[../​variables_d_environnement|variable d'​environnement]] "​CC=xxxxxx"​.+Donner ​ la [[../​variables_d_environnement|variable d'​environnement]] "​CC=xxxxxx"​ 
 +où xxxxxx est le préfixe des commandes de compilateur que make devra utiliser. C'est ce qu'on a donné comme target plus haut.
  
-== Le kernel ==+Pour les paquets installés Linux 32/64 croisé il faut rajouter l'​argument "​-m64(32)"​ à la ligne de gcc. De plus certaines bibliothèques existent en paquets, voir tous les paquets "​lib64(32)*"​. 
 + 
 +==== Le kernel ​====
  
 Exemple de ligne de commande pour compiler le kernel Linux où c'est plus compliqué si on veut utiliser make-kpkg : Exemple de ligne de commande pour compiler le kernel Linux où c'est plus compliqué si on veut utiliser make-kpkg :
Ligne 87: Ligne 95:
 ===== Astuces ===== ===== Astuces =====
  
-Rajouter l'​option "-j X" à make pour compiler sur plusieurs processus à la fois par ex. pour un bicoeur ​: "​-j ​2".+Rajouter l'​option "-j X" à make pour compiler sur plusieurs processus à la fois par ex. pour un bicore ​: "​-j ​4". 
 +X = (nombre de cores)x2
  
 ===== Ressources ===== ===== Ressources =====
  
-Diverses pages trouvée par-ci par-là grâce à notre ami google.+
  
 ----- -----
 //​Contributeurs:​ Créée par [[utilisateurs:​Johndescs]].//​ //​Contributeurs:​ Créée par [[utilisateurs:​Johndescs]].//​
  • tutoriel/compilation_croisee.1203278767.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)