Bonjour,
Comment peut on forcer le compilateur(C++) g++ a compiler comme un compilateur C en utilisant "command-line flag" ?
Merci en avance
Version imprimable
Bonjour,
Comment peut on forcer le compilateur(C++) g++ a compiler comme un compilateur C en utilisant "command-line flag" ?
Merci en avance
en l'appelant avec gcc plutôt que g++ ?
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 :P)
- ...
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:
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++