Compilation de GCC 4 sous Windows


précédentsommairesuivant

V. Résolution des problèmes (fréquents ou pas)

Je n'espère pas que vous rencontriez ces problèmes, mais il vaut mieux prévenir que guérir et voici votre antibiotique (ne pas en abuser, cela risquerait de faire pire que mieux ...).

V-A. C compiler cannot create executables

V-A-1. Symptômes

 
Sélectionnez

checking for mingw32-gcc...  
	/c/devel/gcc-4.3.0-build/./prev-gcc/xgcc -B/c/devel/gcc-4.3.0-build/./prev-gcc/
	-B/c/devel/mingw/mingw32/bin/
checking for C compiler default output file name... configure:
	error: C compiler cannot create executables
See `config.log' for more details.
make[2]: *** [configure-stage2-intl] Error 77

V-A-2. Solution

Dans /work/build/gcc/prev-gcc, extrayez mingw-runtime/lib et w32api/lib de l'archive de GCC.

V-B. Checking for makeinfo... makeinfo

V-B-1. Symptômes

configure semble planté à cette étape pendant quelques temps :

 
Sélectionnez

Checking for makeinfo... makeinfo

V-B-2. Solution et explication

Supprimez du path l'exécutable makeinfo.exe et/ou le package texinfo, généralement situé dans /mingw/bin ou /mingw/msys/bin.

Il arrive, en effet, que certaines versions de makeinfo soient buggées et refusent de se fermer, et configure attend patiemment qu'il se ferme ! Je n'ai pas trouvé d'autre solution moins radicale ...

V-C. libstdc++-v3

V-C-1. Symptômes

Pendant la compilation de libstdc++-v3, il est possible que de nombreuses erreurs apparaissent.

V-C-2. Solution et explication

En fait, tous les en-têtes n'ont pas été copiés dans le bon répertoire ! Pour ce faire, copiez le contenu de /work/src/gcc/libstdc++-v3/include/ext/detail dans /work/build/gcc/mingw32/libstdc++-v3/include/ext/detail.

V-D. Lenteur du compilateur

V-D-1. Symptômes

Le compilateur recompilé est trop lent, ou produit de trop mauvais exécutables.

V-D-2. Résolution et explication

Essayez de lancer make avec la ligne de commande suivante (attention, le processus prendra au moins le double du temps, sans aucune certitude de résultat !) :

GCC
Sélectionnez

make boostrap4 CFLAGS='-O' LIBCFLAGS='-O2' LIBCXXFLAGS='-O2 -fno-implicit-templates' LDFLAGS='-s'

Il est communément admis, mais jamais démontré, que, plus GCC se recompile lui-même, meilleur est le compilateur et mieux optimisé est-il.

V-E. Lenteur de la compilation

V-E-1. Symptômes

La compilation prend beaucoup de temps.

V-E-2. Solution et explication

Essayez de lancer make avec la ligne de commande suivante :

GCC
Sélectionnez

make boostrap2 CFLAGS='-O' LIBCFLAGS='-O2' LIBCXXFLAGS='-O2 -fno-implicit-templates' LDFLAGS='-s'

Il est communément admis, mais jamais démontré, que, plus GCC se recompile lui-même, plus le compilateur produit est meilleur, mieux optimisé.

V-F. enquire ou libgcc.a

V-F-1. Symptômes

Des erreurs d'assemblage lors de la compilation de enquire ou de libgcc.a.

V-F-2. Solutions et explication

Ces erreurs sont souvent causées par un GCC incapable de trouver l'assembleur.

En général, les deux n'ont pas été installés dans le même répertoire (avec les options --prefix et --exec-prefix).

Si les deux sont bien dans le même répertoire (.../bin) et dans le path, vérifiez qu'une ancienne installation de GCC n'est pas exploitable via le path.

En dernier recours, ajoutez le répertoire courant dans le path (path=$PATH:.), créez un lien symbolique dans le répertoire courant pour l'assembleur (as.exe), le linker (ld.exe), et le compilateur (gcc.exe, g++.exe).

V-G. Cannot exec `cc1[plus]': No such file or directory

V-G-1. Symptômes

Lorsque vous compilez, la compilation s'arrête sur ce genre d'erreur :

 
Sélectionnez

gcc.exe: installation problem, cannot exec `cc1': No such file or directory
g++.exe: installation problem, cannot exec `cc1plus': No such file or directory
mingw32-gcc.exe: installation problem, cannot exec `cc1': No such file or directory
mingw32-g++.exe: installation problem, cannot exec `cc1plus': No such file or directory

V-G-2. Solution et explications

En fait, le front-end gcc.exe ou g++.exe ne trouve pas le compilateur en lui-même, cc1.exe ou cc1plus.exe.

Ce problème se résoud très facilement : ajoutez à votre path le répertoire de ces exécutables. Par rapport aux front-ends, c'est : ../libexec/gcc/mingw32/[version de GCC]/.

V-G-2-a. La configuration du path

V-G-2-a-i. Sous DOS et Windows 1, 2, 3, 95, 98, Me

Modifiez le fichier C:\AUTOEXEC.BAT.

Pour ce faire, dans un terminal, lancez edit.exe (sous Windows et DOS 6 et supérieurs), ouvrez le fichier C:\AUTOEXEC.BAT et ajoutez le bon répertoire à la ligne SET PATH=

Pour ce faire :

 
Sélectionnez

edit.exe C:\AUTOEXEC.BAT

L'éditeur s'ouvre. Descendez avec les flèches jusqu'à cette ligne (ou une ligne semblable) :

 
Sélectionnez

SET PATH=C:\;C:\WIN31

Modifiez-la pour qu'elle ressemble à ceci :

 
Sélectionnez

SET PATH=C:\;C:\WIN31;C:\gcc\libexec\gcc\mingw32\2.95.3\

Sauvegardez en utilisant les raccourcis suivants : Alt + F pour ouvrir le menu File, puis S pour sauvegarder.
Quittez avec Alt + F puis X. Le raccourci Ctrl + C ne fonctionne pas dans cet usage : il est réservé à la récente fonction Copy.

V-G-2-a-ii. Sous Windows NT 3, NT 4, 2000, XP, 2003

Faites un clique droit sur votre Poste de Travail, sélectionnez l'option Propriétés.
Dans l'onglet Avancé, cliquez sur le bouton Variables d'environnement.
Dans la partie Variables système, modifiez la variable PATH, et ajoutez lui le chemin absolu vers ces exécutables (par exemple, C:\gcc\libexec\gcc\mingw32\2.95.3\), après un point-virgule.
Appuyez sur Ok jusqu'à être de retour sur le Bureau.

V-G-2-a-iii. Sous Windows Vista, 2008, 7

Ouvrez le menu de l'icône Ordinateur de votre bureau et sélectionnez Propriétés.
Dans la colonne de droite, sélectionnez Paramètres système avancés. S'il vous est demandé une confirmation, acceptez-la.
Cliquez sur Variables d'environnement.
Dans la partie Variables système, modifiez la variable PATH, et ajoutez lui le chemin absolu vers ces exécutables (par exemple, C:\gcc\libexec\gcc\mingw32\2.95.3\), après un point-virgule.
Appuyez sur Ok jusqu'à être de retour sur le Bureau.

V-G-2-a-iv. Méthode alternative sous Windows NT 3, NT 4, 2000, XP, 2003, Vista, 2008, 7

Ouvrez l'éditeur de registre via la commande Exécuter du Menu démarrer ou du Menu Windows en y tapant regedit.exe.
Si la commande Exécuter n'est pas visible, essayez le raccourci Windows + R.
Sous Windows Vista, ouvrez le Menu Windows et tapez directement regedit.exe dans la barre de recherche ou utilisez la boite de dialogue Exécuter.

Ouvrez-y la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment, modifiez la valeur de l'entrée PATH et ajoutez à la fin le chemin absolu vers ces exécutables (par exemple, C:\gcc\libexec\gcc\mingw32\2.95.3\), après un point-virgule.

V-G-2-a-v. Méthode alternative dans un interpréteur de commandes
V-G-2-a-v-α. Interpréteur de commandes DOS

Utilisez cette commande (remplacez C:\gcc\libexec\gcc\mingw32\2.95.3\ par le chemin absolu vers les exécutables) :

 
Sélectionnez

set PATH=%PATH%;C:\gcc\libexec\gcc\mingw32\2.95.3\
V-G-2-a-v-β. Interpréteur de commandes UNIX-like / sh-like

Selon l'interpréteur, la commande suivante peut fonctionner (les shells fournis avec MSYS sont compatibles) (remplacez C:\gcc\libexec\gcc\mingw32\2.95.3\ par le chemin absolu vers les exécutables) :

 
Sélectionnez

PATH=$PATH:/c/gcc/libexec/gcc/mingw32/2.95.3

ou

 
Sélectionnez

PATH=$PATH:C\:\\gcc\\libexec\\gcc\\mingw32\\2.95.3\\

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 © 2008 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.