Bonjour,
Comment peut on forcer le compilateur(C++) g++ a compiler comme un compilateur C en utilisant "command-line flag" ?
Merci en avance
Bonjour,
Comment peut on forcer le compilateur(C++) g++ a compiler comme un compilateur C en utilisant "command-line flag" ?
Merci en avance
ouai gcc, mais si tu compiles du C++ ça va faire vilain :').
Salut,
En fait, gcc lui-même n'est qu'un outil qui permet de distribuer la tache aux différents compilateur:
Normalement, il est capable de déterminer quel compilateur il faudra réellement appeler, mais tu peux lui indiquer explicitement le langage utilisé avec l'option -x (tu peux faire un tour sur http://gcc.gnu.org/onlinedocs/gcc/Ov...verall-Options pour en savoir plus
- cc1 pour C
- g++ pour C++
- gnat(quelque chose) pour ada
- gfortran pour ... fortran (qui l'eu cru
)
- ...
)
Il y a cependant une restriction à la compilation de C++ en invoquant gcc au lieu de c++:
La bibliothèque libstdc++.a n'est pas automatiquement utilisée lors de l'édition de liens, et le chemin vers les en-têtes C++ n'est parfois pas défini.
Tu devra donc invoquer gcc en indiquant (certainement) qu'il faut exéctuer l'édition de lien avec stdc++ et (dépendant de l'endroit où se trouvent les en-tête C++) éventuellement le chemin d'accès vers les en-tête C++, voire, le chemin d'accès à libstdc++.a sous la forme de
G++, de son coté, ajoute automatiquement libstdc++ à l'édition de liens et devrait normalement connaitre le chemin vers les en-têtes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3gcc monfichier.cpp -IcheminVersEnTeteC++ -lstdc++ -LcheminVersLibStdC++ /* ou (si l'extension du fichier n'est pas reconnue comme extension C++) */ gcc -x c++ monfichierSansExtension -IcheminVersEnTeteC++ -lstdc++
Il faut enfin noter que, si g++ rencontre un fichier C, il pourra le compiler (après tout: il y a un sous ensemble commun), mais il le fera en... C++.
Ainsi un simple int *ptr=malloc(sizeof(int)* 15); sera accepté par gcc (edit: en fait, par CC1) et refusé par g++
Si donc tu as des des fichiers C à compiler ... en C et des fichiers C++ à compiler en C++, l'idéal est de travailler avec gcc et non g++, et de rajouter le flag -l (et éventuellement le flag -I) à ta règle de compilation des fichiers C++
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Partager