gpt4 book ai didi

c++ - 添加对C++ 2011的编译器支持

转载 作者:行者123 更新时间:2023-12-02 11:13:57 26 4
gpt4 key购买 nike

我尝试使用opendavinci来为torcs编译机器人。问题是每次我尝试编译它时

#error This file requires compiler and library support for the ISO C++ 2011 standard



出现。显而易见的解决方案是添加支持,但是我有一个来自torcs的复杂makefile,因此我不知道如何解决此问题。

有什么方法可以添加支持而不更改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 \

最佳答案

没有完全标准的方法来构建分布式软件,但是分发中应该有一个READMEINSTALL文件,它给出了或多或少的精确指令。理想情况下,发行版附带一个configure脚本,并且安装过程由./configure; make; make install组成,可能还为./configure提供了一些针对每个发行版的特殊选项。此处的基本过程是./configure脚本将合适的值编辑为Makefile.in以生成Makefile,但是此类脚本可能会非常复杂。当然,事情很少那么简单,而从源代码构建复杂的软件可能是一项技术挑战(这就是软件包管理器是件好事的原因)。

如果没有这样的安装说明(是否已仔细检查?),则应返回软件分发点并在此处寻求帮助(这样做时,您可以在问题中提出一些提示性的暗示–每个人,甚至分发Beta版之前的软件,都应告诉用户如何构建内容。

但是,如果您一直处于高干燥状态,那么以下内容应大致指出下一步的目标:

您需要在编译器的调用中添加一个选项,以使其支持C++ 2011功能(我很确定g++ 5.4具有这些功能,但默认情况下未启用)。

您可以通过在编译器标志中添加-std=c++11选项来做到这一点,并且使用已测量的CXXFLAGS makefile变量来做到这一点(请注意:CXXFLAGS是该变量的可能名称/常规名称,但这不是不可侵犯的规则)。

根据Makefile的结构,您可以通过多种方式添加或调整该变量。

  • 编辑Makefile –在Makefile中搜索CXXFLAGS,然后将该-std选项添加到该定义中。
  • 您将能够在make命令行上重新定义变量:make CXXFLAGS=-std=c++11,但这会影响Makefile中的任何定义,这可能很重要。
  • Makefile可能经过结构化,因此定义中包括CXXFLAGS=-foo -bar $(EXTRA_CXXFLAGS),正是在该位置,您可以使用make EXTRA_CXXFLAGS=-std=c++11调用make。
  • 如果要构建此软件有./configure步骤,那么在执行该步骤时./configure可能会有一个可用选项(在这里听起来不一样)。

  • 但是一种或另一种方式,您的目标是让 -std=c++11出现在Makefile生成的编译器调用中。请注意,如果将 -n选项赋予 make,则它将显示您将生成什么命令,而实际上并未执行任何操作。

    玩得开心。

    关于c++ - 添加对C++ 2011的编译器支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47772276/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com