Scons 选择哪个版本的 g++ |无法识别的命令行选项"-std=c++11"
which version of g++ does Scons pick | unrecognized command line option "-std=c++11"
我在OpenSUSE中使用Scons 2.3.0时遇到问题:
当我添加"-std=c++11"选项时,我看到了错误
cc1plus: error: unrecognized command line option "-std=c++11"
我意识到这是因为我的 g++ 版本太旧了(4.1(。所以我把它升级到4.7.1。下面的事情也做了
- 我将 g++4.7.1 的路径移到了 $PATH 中的第一个位置(在/usr/bin 之前(
当我尝试时
which g++
我看到它显示了我的新 g++4.7.1 的路径
当我尝试
g++ -v
时,我还看到了 4.7.1 版不使用 scons,如果我尝试用
g++ -std=c++11 helloWorld.cpp
构建一个简单的 helloWorld,一切正常。现在通过使用scons,我看到了
cc1plus: error: unrecognized command line option "-std=c++11"
- 我什至在我的SConstruct文件中添加了
s.system("g++ -v")
,它仍然打印正确的版本(4.7.1(
所以我不确定我做错了哪一部分。
请给我一些建议
提前感谢您的帮助!
SCons选择旧版本的编译器作为默认值。
执行os.system("g++ -v")
将使用您的 PATH,但 SCons 内部不使用 PATH 来查找编译器,它会在标准位置查找。
如果无法卸载旧版本的编译器,则可能需要显式指出新编译器。这可以通过在环境中设置一些构造变量来完成,如下所示:
env = Environment()
env.Replace(CXX='path/g++')
env.Replace(CC='path/gcc')
您可以在此处找到所有构造变量。
来自 https://scons.org/doc/2.3.4/HTML/scons-man.html
"SCONS 不会自动将用于执行 SCONS 的外部环境传播到用于构建目标文件的命令。这样,无论调用 scons 时设置的环境变量如何,都可以保证构建可重复。这也意味着,如果要用于生成目标文件的编译器或其他命令不在标准系统位置,则 scons 将找不到它们,除非您显式设置 PATH 以包含这些位置。无论何时创建 scons 构造环境,都可以从外部环境传播 PATH 的值,如下所示:" ...
"导入操作系统env = Environment(ENV = os.environ(">
我发现当使用 scons 和 scl devtoolset 时,最初的 scons 脚本将使用正确的 g++/gcc 版本,但任何依赖的 scons 脚本都会使用默认的而不是当前的 devtoolset。 对环境进行上述更改解决了该问题。
- GCC-7:错误:无法识别的命令行选项"-M64"
- 错误:生成Mesos中无法识别的命令行选项"-Wno无效源编码"[-Weror]
- gcc:错误:在 MacOSX 上构建 openjdk9 时'-mstack-alignment=16'无法识别的命令行选项
- 无法识别的命令行选项 '-WI'
- G-WAN cc1plus:错误:无法识别的命令行选项"-std=gnu++0x"
- getopt:不识别有效的命令行参数
- Netbeans 7.2 中 c++ "-std=c++11"无法识别的命令行选项
- MinGW:错误:无法识别的命令行选项"-V"
- cc1plus:错误:使用 HXCPP "-stdlib=libstdc++"无法识别的命令行选项
- Scons 选择哪个版本的 g++ |无法识别的命令行选项"-std=c++11"
- 优胜美地 G++ 上的 Capybara-WebKit:错误:无法识别的命令行选项 '-Xarch_x86_64'
- gcc:错误:无法识别的命令行选项'-combine
- 无法识别的命令行选项 '-stdlib=libc++' gcc(自制 gcc 5.3.0) 5.3.0
- 安装用C++编写的Python包(leven)时出错:g++无法识别的命令行选项--输出lib
- 无法使项目,无法识别的命令行选项libc ++错误
- 无法识别的命令行选项'-std=c++11'
- gcc soname无法识别的命令行
- cc1plus:错误:无法识别的命令行选项"-std=c++0x"
- g++:错误:无法识别的命令行选项'-mt'
- GCC:错误:无法识别的命令行选项'-fforce-mem'