cc1plus:エラー:g ++で認識されないコマンドラインオプション“ -std = c ++ 11”


90

私が使用してコンパイルしようとしているg++とのいずれか-std=c++11またはc++0xフラグ。

ただし、このエラーが発生します

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.

5
それはだ-std=c++0x++グラムで
ステファン・

2
@stefan不正解です。どちらも可能です。どのgnuバージョンを使用していますか?C ++ 11は4.3以上でのみサポートされています。
antonijn 2013

2
を実行しますg++ --version。次に、ここにバージョン番号を投稿します。
Konfle Dolex 2013

3
それはひどく古いです。そのバージョンはC ++ 11をサポートしていません。C ++ 11をサポートするには、4.7などの新しいバージョンをインストールします。
Konfle Dolex 2013

4
sysadmins C ++ 11対応のコンパイラをインストールした可能性がありますが、それをデフォルトのコンパイラにしていません。g++-コンソールウィンドウでコマンドをオートコンプリートして、インストールされているGCCの特定のバージョンを確認できます。
Bart van Ingen Schenau 2013

回答:


105

あなたのG ++バージョンから見ると、あなたはそれをひどく更新する必要があります。C ++ 11はG ++ 4.3以降でのみ使用できます。最新バージョンは4.7です。

G ++ 4.7より前のバージョンでは、を使用する-std=c++0x必要があります-std=c++11。より新しいバージョンでは、を使用できます。


1
4.8.0はいい感じですか、それとも3月に実際にリリースされますか?
クリス

@chrisすみません、それは4.7であるべきです、4.8はまだ開発中です。
antonijn 2013

@Antonijn、ああ、私は1〜2か月待つと思います。私は安定版リリース、またはあなたが使いたいより良い言葉を好みます。
クリス

@クリスうん。または、Linux
Mint

2
@JoeCoderGuyええ、それは私が使っているものです。
antonijn 2013

14

gccウェブサイトからの引用:

C ++ 11機能は、GCCのSubversionリポジトリのトランクおよびGCC 4.3以降で、「メインライン」GCCコンパイラの一部として使用できます。C ++ 0xサポートを有効にするには、コマンドラインパラメーター-std = c ++ 0xをg ++コマンドラインに追加します。または、C ++ 0x拡張に加えてGNU拡張を有効にするには、g ++コマンドラインに-std = gnu ++ 0xを追加します。GCC 4.7以降では、-std = c ++ 11と-std = gnu ++ 11もサポートしています。

そのため、おそらくをサポートしていないバージョンのg ++​​を使用してい-std=c++11ます。-std=c++0x代わりに試してください。

C ++ 11機能を利用できるのは、バージョン4.3以降のみです。


@Antonijn正解ですが、誰にとっても選択肢ではありません。
stefan 2013

@Antonijn:バージョン> 4.1と互換性のないソフトウェアがあります。例ABACUS informatik.uni-koeln.de/abacus/index.html残念ながら、私は一度だけ使用しなければなりませんでした。
stefan 2013

3

あなたはこれを試すべきです

g++-4.4 -std=c++0x or g++-4.7 -std=c++0x

-4

私も同じエラーが発生しました--Dフラグでコンパイルして修正しました、これを試してください:

g ++ -Dstd = c ++ 11


なぜこれが反対投票されたのですか?答えの何が問題になっていますか?なぜこれが機能しないのですか?
Veda

@Vedaは少なくとも(gcc4.6.3では)、c ++ 11でコンパイルすることはできませんでした。私はstd::vector<int> v = {1, 2, 3};テストするために単純な2行のプログラムを作成しましたが、あらゆる種類のエラーが発生していました(フラグなしの場合とは異なるエラーですが、興味深いことに)。
scohe001

6
@Vedaこの回答はコンパイルされますが、望ましいことはほとんど行われません。-Dコマンドライン引数は、挿入に相当し#define、あなたのソースコードに。したがって、このコマンドはのようなもの#define std c++11です。次に、どのstd::stringように再定義されるc++11::stringか想像できますか?まったく役に立ちません。
jwm 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.