Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:compilation_croisee [Le 15/12/2008, 04:21] – enlevage de pub 213.95.41.13 | tutoriel:compilation_croisee [Le 19/01/2021, 10:35] (Version actuelle) – structure des titres rectifié et ajout d'un lien vers un tutoriel amiralgaby | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | ====== Pouvoir compiler pour une autre architecture que la sienne ou comment faire de la compilation croisée ====== | ||
| + | |||
| + | 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 commencer par compiler... un compilateur ! Mais attention, il sera BRUT c' | ||
| + | |||
| + | 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 ===== | ||
| + | |||
| + | Avoir jeté un oeil sur la page traitant de la compilation standard : [[tutoriel: | ||
| + | |||
| + | Si vous vouler compiler pour Windows(r) ou pour un 32/64 bits croisé, | ||
| + | rendez-vous à sur la page [[tutoriel: | ||
| + | |||
| + | 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 ===== | ||
| + | |||
| + | |||
| + | |||
| + | ----- | ||
| + | // | ||
