Cross-compilation avec GCC 4 sous Windows pour Linux


précédentsommairesuivant

I. Introduction

I-A. Remarque d'introduction

Cet article est la suite du guide de la compilation de GCC 4 sous Windows.
En effet, ne seront pas reprécisées ici toutes les options utilisées pour la configuration qui y ont déjà été présentées.

I-B. Qu'est-ce qu'un compilateur ?

Selon Wikipédia, un compilateur est un programme informatique qui traduit un langage, le langage source, en un autre, appelé le langage cible, en préservant la signification du texte source.

Je suppose qu'une version en français serait appréciée. En gros, un compilateur prend un fichier source dans un langage (disons, le C) et le convertit dans un autre langage (généralement, un langage assembleur, ou un langage machine) et le code produit fait la même chose que le code d'origine.

I-C. Qu'est-ce qu'un cross-compilateur ?

Selon Wikipédia toujours, un cross-compilateur (ou compilateur croisé, en bon français, mais je préférerai, tout au long de l'article, l'anglicisme) est un programme capable de traduire un code source en code objet ayant un environnement d'exécution (architecture matérielle, système d'exploitation) différent de celui où la compilation est effectuée

Dit autrement, le compilateur se lance sous un OS (Windows, dans le cas qui nous intéresse) et produit des exécutables qui se lancent sous un autre OS (Linux, ici).

I-D. À propos du 64 bits

Depuis quelques temps, un groupe s'est chargé de l'adaptation de MinGW pour un environnement 64 bits. À l'heure actuelle, seul l'AMD64 (aka X86_64) est supporté (tous les processeurs 64 bits, à l'exception des Intel Itanium et Itanium 2).

Cependant, il n'est pas du tout supporté, ni par MinGW, ni par GCC, mais de nombreux programmes l'utilisent déjà sans problème majeur.

Pour ceux qui sont intéressés par ces possibilités, ou ceux qui en ont besoin, sachez que la première partie vous a appris à compiler GCC pour Win32, et que ce compilateur est obligatoire pour pouvoir compiler sereinement GCC pour Win64. Il serait possible de s'en passer, cependant, mais les warnings vont pleuvoir.

Un nouveau projet est né pour porter MinGW sous Windows 64 bits. Il s'agit de MinGW64. Ce projet est mis à jour beaucoup plus fréquemment que MinGW et propose même des binaires déjà prêts pour compiler depuis Win32, Win64, Cygwin et Lin64.

I-E. Préparation de l'environnement

Vous aurez besoin du compilateur GCC, de préférence, la même version que celle que vous allez compiler.
En effet, la partie cross-compilation des sources est plus dure à maintenir, et donc, moins facile à compiler. Facilitons-donc la tâche et choisissons un compilateur qui accepte de compiler avec des sources qui acceptent d'être compilées.

Changez le fstab pour que /work/build soit un nouveau répertoire vide (par exemple, renommez l'ancien en /work/build-native, et créez un nouveau /work/build) et que /cross pointe vers un dossier vide.

Vérifiez que toutes les sources sont toujours accessibles via /work/src, et que le nouveau GCC est dans le path (/gcc), ainsi que MSYS (/mingw/msys ou /gcc/msys).

Vous pouvez vérifier que GCC est dans le path en tapant ces commandes :

 
Sélectionnez
gcc --version
g++ --version

Elles doivent retourner un message semblable :

 
Sélectionnez
gcc.exe (GCC) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ou :

 
Sélectionnez
g++.exe (GCC) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Faites bien attention à la version de GCC affichée : 4.3.2, vous êtes dans le bon ; 3.4.5, vérifiez que vous avez bien installé GCC dans sa version 4, pas la version stable disponible sur le site de MinGW !

I-F. La cible

I-F-1. Qu'est-ce que la cible ?

La notion de cible n'est jamais utilisée seule. On lui adjoint aussi l'hôte (host) et le build.

Le build est la plateforme sur laquelle vous compilez (utilisez, de préférence, la valeur par défaut, sauf si le programme se trompe)

L'hôte est la plateforme sur laquelle l'exécutable que vous produisez à l'instant s'exécutera.

La cible est la plateforme sur laquelle s'exécutera les exécutables produits par le programme que vous configurez.

I-F-2. Trouver la cible

Dans le répertoire des sources des binutils, de GCC, de GMP ou de MPFR et utilisez la commande ci dessous pour votre plateforme

 
Sélectionnez
config.guess

Le code retourné est votre target, ou cible.

Pour canonicaliser un nom (rendre standard), utilisez une commande semblable :

 
Sélectionnez
config.sub i586-linux

i586 est votre architecture et linux votre OS.

I-G. Pourquoi y a-t-il si peu à compiler ?

En fait, quelques paquets sont tout à fait inutiles sous Linux : la Win32API et le runtime MinGW.
La première est la version MinGW de l'API Win32, qui n'existe pas sous Linux.
Le deuxième est la librairie de base pour Windows uniquement, et une version Linux (minimaliste) est compilée en même temps que GCC, vu que cela rentre dans ses cordes (Windows n'étant pas prévu pour le support au début). Mais, vu que cette version est très minimaliste, nous devrons compiler une version exhaustive.

Ensuite, GMP et MPFR ne seront pas recompilés, vu que le compilateur en dispose déjà.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

GCC et la compilation croisée
Compilation de GCC 4 sous Windows
Cross-compilation avec GCC 4 sous Windows pour Linux
Cross-compilation de Qt4
  

Copyright © 2009 Thibaut Cuvelier. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.