2013-06-29 33 views
18

私はubuntu 12.04を使用しています。デフォルトのgccは4.6.3です。これはC++ 11のコマンドを受け入れていないので、コマンドがC++ 98と互換性がないという出力を出す。私はオンラインでチェックし、オペレーティングシステム上でデフォルトのコンパイラを変更しないように助言している人々が不安定になるのを見てきました。誰でも、C++ 11準拠のgccコンパイラをダウンロードするための修正方法や安全な方法を提案することができます。ubuntuでgccコンパイラをC++ 11に変更する方法

+8

'G ++ -std = C++ '11またはそれがない場合g ++ -std = C++ 0x' – jxh

+2

システムの横にGCCの別のバージョンをいつでもインストールすることができます。あなた自身で別のバージョンをコンパイルすることもできます。ネットには多くのチュートリアルがあります。あなたの好みの検索エンジンを使用してください。 GCCは通常、実行ファイルにバージョン番号を付加し、さらにバージョン管理されたディレクトリに特定のライブラリをインストールするので、新しいバージョンはシステム提供のものと衝突しません。 –

答えて

15

gcc 4.6.3 supports many c++11 features。ただし、デフォルトでは無効になっています。これらを有効にするには、次のフラグを使用します。

g++ -std=c++0x ... 

このフラグはGNU拡張も無効にします。有効にするには、-std=gnu++0xフラグを使用します。

+0

だから、g ++でコンパイルするコマンドを入力する必要があります-o実行可能なfilename.cc -std = C++ 0xですか? –

+1

@タラシルラ正しい。 gccを4.8にアップグレードすることを検討したいと思うかもしれませんが、[もっと良いC++ 11のサポートがあります](http://gcc.gnu.org/gcc-4.8/cxx0x_status.html)。 – dasblinkenlight

+0

どのように私は新しいものに私のデフォルトのコンパイラを更新するのですか?なぜ、オペレーティングシステムでgccの既存のバージョンを削除しないと言うと、システムが不安定になるのですか?本当ですか? –

21

他の人も示唆しているように、stdコマンドラインオプションを入力する必要があります。私たちは、それが簡単のために作ってみましょうあなた

    Ctrlキー + Altキー + Tを押して
  1. を開き、端末
  2. sudo gedit ~/.bashrc
  3. 最後の行

    alias g++="g++ --std=c++0x" 
    
  4. として次の行を入力します。
  5. ファイルを保存して閉じ、端末を閉じます。
  6. 再び今、開放端子
  7. と、単にそれのthats g++ filename.cpp

して、C++ 11個のプログラムをコンパイルします。デフォルトでは、C++ 11標準のためにコンパイルされます。

注:上記のオプションに従っている場合は、非C++ 11個のプログラムをコンパイルするために、あなたが使用する必要があり

g++ --std=c++98 filename.cpp 
+0

ok。ありがとう。しかし、最後のノートでは、非C++ 11のプログラムをコンパイルするためには、コマンドを変更すると述べています。しかし、すべてのバージョンが下位互換性であるとは限りません。したがって、C++ 11コンパイラは、C++ 11の特定のコマンドを使用しなくてもプログラムをコンパイルする必要があります。 –

関連する問題