2013-10-04 77 views
0

我在OpenSUSE中使用使用SCons 2.3.0時遇到的問題:哪個版本的g ++會執行Scons pick |無法識別的命令行選項 「-std = C++ 11」

當我加入 「-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,如果我嘗試使用g++ -std=c++11 helloWorld.cpp構建一個簡單的helloWorld,一切正常。

  5. 現在使用scons的,我看到了cc1plus: error: unrecognized command line option "-std=c++11"

  6. 我甚至在我SConstruct文件添加s.system("g++ -v"),它仍然打印正確的版本(4.7.1)

所以我不知道哪我做錯了一部分。

請給我一些建議

在此先感謝您的幫助!

+0

您是否嘗試在網上搜索? [這出現在結果的頂部](http://www.scons.org/wiki/FrequentlyAskedQuestions#Why_doesn.27t_SCons_find_my_compiler.2BAC8-linker.2BAC8-etc..3F_I_can_execute_it_just_fine_from_the_command_line。)。我會建議不要使用SCons。 – DanielKO

回答

1

SCons選擇編譯器的舊版本爲默認版本。

os.system("g++ -v")將使用您的PATH,但SCons內部不使用PATH來查找編譯器,它看起來在標準位置。

如果你不能卸載舊版本的編譯器,你可能不得不明確指出新的編譯器。這可以通過在環境中設置了一些結構變量如下進行:

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

你可以找到所有的施工變量here

+0

非常感謝Brady。這個對我有用! – user2800938

+0

@ user2800938,很高興聽到它適合你,很樂意幫助:) – Brady

相關問題