IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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
info 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.
info 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.
info Vous trouverez la liste complètes des spécifications d'hôte et de cible en directement sur le site de Gcc

V-C. Lancer la compilation

Il ne nous reste plus qu'à lancer la compilation avec la commande

make
Une fois la compilation terminée avec succès, il ne nous restera plus qu'à lancer l'installation avec la commande

make install
Nous pouvons maintenant retourner dans le dossier racine de compilation (~/build) avec la commande

cd ..
 

Valid XHTML 1.0 TransitionalValid CSS!

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.