我尝试使用opendavinci为torcs编译机器人。问题是每次我尝试编译它
#error This file requires compiler and library support for the ISO C++ 2011 standard
出现。显而易见的解决方案是添加支持,但我有一个复杂的makefile来自torcs所以我不知道如何解决这个问题。
有没有办法在不更改makefile的情况下添加支持?我读到了可以帮助我的CXXFLAGS,但我不明白它是如何工作的。
编译器是用于Ubuntu的g ++ 5.4.0
felix@ubuntufelix:/usr/src/torcs/torcs-1.3.7/src/drivers/bt$ make
g++ -I/usr/src/torcs/torcs-1.3.7/export/include -I/usr/src/torcs/torcs-1.3.7 -g -O2 -Wall -fPIC -fno-strict-aliasing -O2 -DUSE_RANDR_EXT -DGL_GLEXT_PROTOTYPES -Wall -fPIC -fno-strict-aliasing -O2 -DUSE_RANDR_EXT -DGL_GLEXT_PROTOTYPES -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DHAVE_CONFIG_H -c driver.cpp
In file included from /usr/include/c++/5/array:35:0,
from driver.h:15,
from driver.cpp:1:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
答案 0 :(得分:2)
没有完全标准的方法来构建分布式软件,但 应该是分发中的README
或INSTALL
文件,它提供了或多或少的精确指令。理想情况下,发行版附带配置脚本,安装过程由./configure; make; make install
组成,可能会为./configure
提供一些每个分发的特殊选项。这里的基本过程是./configure
脚本将合适的值编辑到Makefile.in
以生成Makefile
,但这样的脚本可能是任意复杂的。当然,事情很少那么简单,从源代码构建复杂的软件可能是一个技术挑战(这就是包管理器是一件好事)。
如果没有这样的安装说明(你仔细检查了吗?),那么你应该回到软件分发点并在那里寻求帮助(你可以提示在你的问题中责备你的问题 - 所有人,甚至分发预测试软件,应该告诉用户如何构建东西。)
但是,如果你已经处于高度干燥状态,那么以下内容应该广泛地指出下一步要看的地方:
您需要为编译器的调用添加一个选项,告诉它支持C ++ 2011功能(我很确定g ++ 5.4具有这些功能,但默认情况下不启用它们。)
您可以通过向编译器标志添加-std=c++11
选项,以及 使用您测量的CXXFLAGS
makefile变量的方式来做到这一点(注意:{ {1}}是此变量的可能/常规名称,但它不是不可侵犯的规则。)
根据Makefile的结构,您可以通过多种方式添加或调整该变量。
CXXFLAGS
并将CXXFLAGS
选项添加到该定义中。-std
,但这将扼杀Makefile中的任何定义,这可能很重要。make CXXFLAGS=-std=c++11
,这正是为了让您可以使用CXXFLAGS=-foo -bar $(EXTRA_CXXFLAGS)
调用make。make EXTRA_CXXFLAGS=-std=c++11
步骤来构建此软件,那么在执行该步骤时./configure
可能会有一个选项(这听起来不像这里的情况)。但无论如何,您的目标是让./configure
出现在Makefile生成的编译器调用中。请注意,如果您将-std=c++11
选项提供给-n
,那么它会显示它将生成哪些命令,而不会实际执行任何操作。
玩得开心。