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

Compilation de GCC 4 sous Windows

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

Copyright © 2008 Thibaut Cuvelier. 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.