Guide de la Compilation de Gcc sous windows avec MinGW
Date de publication : 22/09/2007 , Date de mise à jour : 05/09/2010
V. Compiler binutils
V-A. Configurer la compilation
V-B. Comprendre les commandes
V-B-1. Les problèmes posés par l'internationnalisation
V-B-2. Profiter de l'option --with-sysroot
V-B-3. Au sujet des cibles et des hôtes
V-C. Lancer la compilation
V. Compiler binutils
Il est maintenant temps de passer aux choses sérieuses en commençant par compiler binutils.
V-A. Configurer la compilation
La première étape consiste à créer un répertoire de compilation séparée et à configurer la compilation
à l'aide des commandes:
$ cd build/binutils
$ ../../binutils-2.20.51/configure --prefix=/mingw --with-sysroot=/mingw \
--disable-nls --disable-shared --enable-auto-import
|
V-B. Comprendre les commandes
Nous indiquons enfin les répertoires à créer. Comme il est indispensable de compiler gcc
et binutils dans des dossiers autres que le répertoire dans lequel se trouvent leur sources, et
qu'il est généralement conseillé de faire pareil pour les autres projets que l'on compile, nous
créons donc directement un répertoire de compilation pour chacun des projets que nous allons copier.
L'option --prefix=<chemin_d'installation> nous permet d'indiquer le répertoire dans
lequel sera installé le projet que l'on s'apprête à compiler.
Dans le cas présent, nous demandons à ce qu'il soit installé dans /mingw qui fait un lien direct avec
le dossier c:\MinGW.
L'option --disable-nls nous permet d'indiquer que nous ne souhaitons pas profiter de l'internationalisation
du projet.
L'option --disable-shared indique que nous ne souhaitons que les exécutables utilisent la
version statique des bibliothèques dont elles dépendent au lieu d'une version dynamique (DLL).
Enfin, l'option --enable-auto-import permet à l'éditeur de liens "ld" d'importer automatiquement
le symboles depuis les DLL, en nous évitant dés lors un avertissement pour autant que le symbole
soit trouvé. Cette option n'empêche nullement une sortie sur erreur si un symbole nécessaire
n'est pas trouvé.
V-B-1. Les problèmes posés par l'internationnalisation
Si vous vous demandez pourquoi je désactive l'internationnalisation, il faut vous rappeler que l'ensemble
des outils que nous nous apprêtons à compiler ont à la base été développés pour et sous linux.
Le problème est que l'encodage utilisé par la console linux et celui utilisé par la ligne de commande
windows sont différents.
Il s'en suit que certains caractères, essentiellement les caractères accentués, seront interprétés différemment
selon l'environnement dans sous lequel ils sont utilisés.
Si nous activons l'internationnalisation, nous ne pourrons pas éviter le recours aux caractères accentués,
tant ils sont utilisés intensivement dans la langue française.
Comme ils seront mal interprétés sous windows, ils seront remplacés par des symboles plus ou moins cabalistiques
qui ne feront que rendre la lecture des messages envoyés par les outils plus difficile.
L'anglais utilisé étant malgré tout technique et, finalement, relativement simple, il me semble préférable
de forcer l'utilisation de cette langue qui a la particularité de n'utiliser aucun caractère accentué.
Vous restez bien entendus libre de supprimer cette option, mais vous serez prévenus...
V-B-2. Profiter de l'option --with-sysroot
Il est possible, depuis quelques versions, lors de la compilation de binutils et de Gcc, de préciser
l'option --with-sysroot=<chemin_vers_dossier> de manière à signaler à tous les
outils qu'ils doivent parcourir le chemin indiqué afin de rechercher ce dont ils ont besoin.
Cette option en remplace une série d'autres, Cependant, nous devrons prendre quelques précautions lors de la
compilation de Gcc.
Elle aura en outre l'énorme intérêt de configurer les différents outils de sortent qu'ils fonctionnent
même si l'on vient à déplacer le dossier d'installation.
V-B-3. Au sujet des cibles et des hôtes
Il est possible, lors de la compilation de nombreux projets, de déterminer un système cible, un système
hôte ou un système "général" pour laquelle on souhaite effectuer la compilation.
La cible permet de déterminer sur quel système les exécutables créés par le compilateur seront exécutés.
Cela nous permet, par exemple, d'envisager la création d'un "compilateur croisé" : fonctionnant
sous windows mais créant des exécutables prévus pour fonctionner sous linux, ou inversement.
L'hôte quant à lui permet de déterminer sur quel système nous allons compiler nos projet
Le système général enfin défini une cible et un hôte identique.
Les options à passer pour définir la cible, l'hôte et le système général sont respectivement
-
--target=<architecture-type_d_orddinateur-système> pour le système cible
-
--host=<architecture-type_d_orddinateur-système> pour le système hôte
-
--build=<architecture-type_d_orddinateur-système> lorsque la cible et l'hôte sont identique
Comme il ne s'agit ici que de compiler pour des PC, sans autre précision, et pour des systèmes utilisant
MinGW, les options prendraient donc la forme de *-pc-mingw32, où l'étoile pourrait être remplacée
par
-
i386 : pour les processeurs de type 3x86
-
i486 : pour les processeurs de type 4x68
-
i586 : pour les processeurs de type Pentium I (et équivalents)
-
i686 : pour les processeurs de type Pentium II (et équivalents)
-
i786 : pour les processeurs de type supérieurs
 |
Je ne présente ici que les types de processeurs dits "32 bits", car il est préférable de partir d'un
autre projet (mingw-w64) si vous souhaitez obtenir une version de MinGW compatible avec le 64 bits.
|
 |
A l'heure actuelle, MSYS considère par défaut que le système est de type "i686-pc-mingw32", aussi bien
pour la cible que pour l'hôte. C'est la raison pour laquelle je ne précise ni l'un ni l'autre,
car cela permet de générer malgré tout des exécutables pour des systèmes qui, bien qu'ils deviennent
relativement vieux, peuvent toujours être utilisés.
|
V-C. Lancer la compilation
Il ne nous reste plus qu'à lancer la compilation avec la commande
Une fois la compilation terminée avec succès, il ne nous restera plus qu'à lancer l'installation avec
la commande
Nous pouvons maintenant retourner dans le dossier racine de compilation (~/build) avec la
commande


Copyright © Philippe Dunski.
Aucune reproduction, même partielle, ne peut être faite
de ce site ni 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.