gcc-4.8(和4.9)无法识别-std = c ++ 11参数

时间:2014-09-02 16:18:26

标签: c++ gcc c++11 makefile gcc4.9

我正在尝试使用gcc-4.9编译我为Web服务器(https://github.com/eidheim/Simple-Web-Server)下载的代码示例,我收到一个我无法解决的错误:

src$ make
Makefile:45: http_examples.d: No such file or directory
/usr/bin/gcc-4.9 -MM http_examples.cpp -MT "http_examples.o http_examples.d" -MF http_examples.d
In file included from /usr/include/c++/4.9/regex:35:0,
                 from server_http.hpp:6,
                 from http_examples.cpp:1:
/usr/include/c++/4.9/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and    library support for the ISO C++ 2011 standard. This support is currently experimental, and must be   enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support for the \

^

我已尝试过两种编译器选项,但都没有解决问题。以下是make文件中的相关位:

PROJECT = ToolBoxServer
# Compiler
CC = /usr/bin/gcc-4.9

# Run Options       
COMMANDLINE_OPTIONS = /dev/ttyS0

# Compiler options during compilation
COMPILE_OPTIONS = -std=c++11 -pedantic -Wall -Wno-long-long -ggdb3 -gstabs -O0 -pthreads

#Header include directories
HEADERS =  -I/usr/local/include -I./ -I/usr/local/include/boost
#Libraries for linking
LIBS = -lm -lmysqlcppconn
# Dependency options
DEPENDENCY_OPTIONS = -MM

# Compile every cpp file to an object
%.o: %.cpp
        $(CC) -c $(COMPILE_OPTIONS) -o $@ $< $(HEADERS)

我使用的是gcc-4.8。我读到gcc 4.9对正则表达式有更好的支持并安装了它但是我得到了同样的错误。

有没有人遇到过这个?据我所知,gcc-4.9是最类似c ++ 11的编译器。任何人都可以建议一种方法来解决这个问题吗?

由于

麦克

1 个答案:

答案 0 :(得分:2)

您没有包含makefile中的所有相关位。值得注意的是,您没有在makefile中包含类似这样的规则:

%.d: %.cpp
     $(CC) -MM $< -MT "$(@:.d=.o) $@" -MF $@

您收到错误,因为此规则不使用您在正常调用GCC时使用的相同编译选项。如果您同时向此规则添加$(COMPILE_OPTIONS),则不应再出现错误。