0

OpenSUSE で Scons 2.3.0 を使用すると、次のような問題が発生します。

「-std=c++11」オプションを追加すると、エラーが表示されました

cc1plus: error: unrecognized command line option "-std=c++11"

私のg ++​​バージョンが古すぎる(4.1)ためだと気づきました。そこで、4.7.1 にアップグレードしました。次のことも行われます

  1. g++4.7.1 のパスを $PATH の最初の場所 (/usr/bin の前) に移動しました。
  2. 私がしようとすると

      which g++
    

    私はそれが私の新しいg ++ 4.7.1へのパスを示しているのを見ました

  3. 試してみるg++ -vと、バージョン 4.7.1 も表示されました

  4. scons を使用せずに、単純な helloWorld を で構築しようとするとg++ -std=c++11 helloWorld.cpp、すべて正常に動作します。

  5. scons を使用することで、cc1plus: error: unrecognized command line option "-std=c++11"

  6. s.system("g++ -v")SConstruct ファイルに追加しても、正しいバージョン (4.7.1) が出力されます。

したがって、どの部分が間違っていたのかわかりません。

アドバイスをお願いします

助けてくれてありがとう!

4

2 に答える 2

2

SCons は古いバージョンのコンパイラをデフォルトとして選択しています。

実行にはPATHos.system("g++ -v")が使用されますが、SCons は内部的に PATH を使用してコンパイラを見つけるのではなく、標準の場所を検索します。

古いバージョンのコンパイラをアンインストールできない場合は、新しいコンパイラを明示的に指定する必要がある場合があります。これは、次のように環境にいくつかの構築変数を設定することで実行できます。

env = Environment()
env.Replace(CXX='path/g++')
env.Replace(CC='path/gcc')

すべての構成変数はここにあります

于 2013-10-04T07:41:56.383 に答える