Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| tutoriel:compilation_croisee [Le 16/02/2008, 08:58] – créée à poursuive (bientot) johndescs | tutoriel:compilation_croisee [Le 11/09/2022, 12:19] (Version actuelle) – 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) moths-art | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | + | {{tag> |
| ---- | ---- | ||
| 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' | 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' | ||
| - | Pour cela, nous allons compiler... un compilateur ! Mais attention, il sera BRUT c' | + | Pour cela, nous allons |
| + | Exceptions : le compilateur pour Windows(r) existe en paquets, pas besoin de le re-compiler, | ||
| + | |||
| + | Pour la compilation croisée vers une architecture arm un petit script vous est présenté dans l' | ||
| ===== Prérequis ===== | ===== Prérequis ===== | ||
| - | Avoir jeté un oeil sur la page traitant de la compilation standard : [[tutoriel: | + | Avoir jeté un oeil sur la page traitant de la compilation standard : [[tutoriel: |
| - | Si vous vouler compiler pour Windows(r), vous avez de la chance, tout existe en paquets | + | Si vous vouler compiler pour Windows(r) |
| + | 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:// | Avoir téléchargé les sources de **[[http:// | ||
| + | |||
| + | ===== Compilation du compilateur ===== | ||
| + | |||
| + | 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 ==== | ||
| + | |||
| + | Décompresser l' | ||
| + | |||
| + | === configuration === | ||
| + | |||
| + | Configurer la compilation avec la commande : | ||
| + | ./configure --target=x86_64-pc-linux | ||
| + | |||
| + | L' | ||
| + | |||
| + | On peut utiliser l' | ||
| + | |||
| + | === compilation === | ||
| + | |||
| + | Il suffit de lancer la commande : | ||
| + | make all | ||
| + | |||
| + | === installation === | ||
| + | |||
| + | Avec les droits super-utilisateur si on veut installer dans les parties système (option " | ||
| + | make install | ||
| + | |||
| + | |||
| + | ==== gcc : "GNU Compiler Collection", | ||
| + | |||
| + | Décompresser l' | ||
| + | |||
| + | === configuration === | ||
| + | |||
| + | Configurer la compilation avec la commande : | ||
| + | ./configure --enable-languages=c --disable-threads --disable-shared --disable-checking --prefix=/ | ||
| + | |||
| + | L' | ||
| + | |||
| + | Si on veut le C++, il faut le rajouter aux langages, après c : --enable-languages=c, | ||
| + | |||
| + | === compilation === | ||
| + | |||
| + | Il suffit de lancer la commande : | ||
| + | make all-gcc | ||
| + | |||
| + | === installation === | ||
| + | |||
| + | Avec les droits super-utilisateur si on veut installer dans les parties système (option " | ||
| + | make install-gcc | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | Voila, on devrait avoir un compilateur en état de marche... | ||
| + | |||
| + | ===== Utilisation ===== | ||
| + | |||
| + | Donner | ||
| + | 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. | ||
| + | |||
| + | Pour les paquets installés Linux 32/64 croisé il faut rajouter l' | ||
| + | |||
| + | ==== Le kernel ==== | ||
| + | |||
| + | Exemple de ligne de commande pour compiler le kernel Linux où c'est plus compliqué si on veut utiliser make-kpkg : | ||
| + | sudo make-kpkg --initrd --arch=amd64 --cross_compile=x86_64-pc-linux --revision=amd64noyaujojo --append-to-version test kernel_image kernel_headers modules_image | ||
| + | En super-utilisateur pour créer le paquet (!). Ici on donne à arch la valeur " | ||
| + | |||
| + | Les autres options sont issues de la page [[tutoriel: | ||
| + | |||
| + | ===== Astuces ===== | ||
| + | |||
| + | Rajouter l' | ||
| + | X = (nombre de cores)x2 | ||
| + | |||
| + | ===== Ressources ===== | ||
| + | |||
| + | |||
| + | |||
| + | ----- | ||
| + | // | ||
