我正在尝试使用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的编译器。任何人都可以建议一种方法来解决这个问题吗?
由于
麦克
答案 0 :(得分:2)
您没有包含makefile中的所有相关位。值得注意的是,您没有在makefile中包含类似这样的规则:
%.d: %.cpp
$(CC) -MM $< -MT "$(@:.d=.o) $@" -MF $@
您收到错误,因为此规则不使用您在正常调用GCC时使用的相同编译选项。如果您同时向此规则添加$(COMPILE_OPTIONS)
,则不应再出现错误。