cc1plus: erreur: unrecognized option de ligne de commande “-std=c++11” avec g++
Je suis en train de compiler à l'aide de g++
et le -std=c++11
ou c++0x
drapeaux.
Cependant, j'ai cette erreur
cc1plus: error: unrecognized command line option "-std=c++11"
g++ --version
g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- c'est
-std=c++0x
avec g++ - Incorrect, les deux sont possibles. Qui gnu version utilisez-vous? C++11 est prise en charge uniquement dans >= 4.3.
- Exécuter
g++ --version
. Puis après le numéro de version ici. - Aussi, quel système d'exploitation êtes-vous?
- Je pense qu'avant c'était
-std=c++0x
- Oui, il l'était. J'ai mal compris votre commentaire, désolé. Je pensais que vous parliez de l'option a été de 4,3+.
- Que font les administrateurs systèmes veux dire quand ils disent que C++11 a été installé?
- C'est horriblement vieux. Cette version ne prend pas en C++11. Installer une version plus récente comme 4.7 pour le C++11.
- Vous pouvez obtenir la plus récente de gcc gcc.gnu.org.
- Il est possible que les administrateurs système ne installer une C++11 est capable de compilateur, mais n'est pas celui par défaut. Vous pouvez le vérifier certaines versions de GCC sont installés en essayant de s'auto-valider la commande
g++-
dans la console de la fenêtre. - Mon g++ version est g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 mais l'erreur persiste, comment résoudre le problème.
- Je l'ai mise à niveau à la version 4.8, merci.
- GCC 4.1 est toujours disponible en raison de Powermac. Apple navires OS X 10.5 avec GCC 4.1. - Je encore utiliser mon vieux PowerMac pour les tests antique, le matériel et le logiciel. Si vous voulez vraiment vous punir vous-même, puis d'installer Fedora 1 sur une machine virtuelle avec GCC 3.1.
Vous devez vous connecter pour publier un commentaire.
Voir à partir de votre G++ version, vous devez mettre à jour mal. C++11 a seulement été disponible depuis G++ 4.3. La version la plus récente est de 4,7.
Dans les versions pré-G++ 4.7, vous aurez à utiliser
-std=c++0x
, pour les versions plus récentes, vous pouvez utiliser-std=c++11
.-std=c++0x
a bien fonctionné pour moi.Citant le site web de gcc:
Donc probablement vous utilisez une version de g++ qui ne prend pas en charge
-std=c++11
. Essayez-std=c++0x
à la place.Disponibilité de C++11 caractéristiques est pour les versions >= 4.3 seulement.
clang
!vous devriez essayer ce
J'ai aussi eu la même erreur, la compilation avec drapeau-D fixe, Essayez ceci:
g++ -Dstd=c++11
std::vector<int> v = {1, 2, 3};
pour tester et il jetait toutes sortes d'erreurs sur elle (les différentes erreurs que sans le drapeau cependant, ce qui est assez intéressant).-D
argument de ligne de commande est équivalente à l'insertion d'une#define
dans votre code source. Si cette commande est comme avoir#define std c++11
. Pouvez-vous imaginer commentstd::string
seront redéfinis pourc++11::string
? Pas très utile à tous.