gcc-4.8 (и 4.9) не распознают параметр -std = c ++ 11

Я пытаюсь скомпилировать пример кода, который я скачал для веб-сервера (https://github.com/eidheim/Simple-Web-Server) с gcc-4.9 и я получаю сообщение об ошибке, которое не могу устранить:

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

Решение

Вы не включили все соответствующие биты из вашего make-файла. Примечательно, что вы не включили правило из вашего make-файла, которое выглядит примерно так:

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

Вы получаете ошибку, потому что это правило не использует те же параметры компиляции, которые вы используете при обычном вызове GCC. Если вы добавите $(COMPILE_OPTIONS) к этому правилу, вы не должны больше получать ошибку.

2

Другие решения


По вопросам рекламы [email protected]