2015-05-22 3 views
0

После попытки скомпилировать RENDLER мезосфере в C++ с make all, я получаю следующее сообщение об ошибке:Ошибка компиляции С Мезосферы RENDLER

$ make all 
g++ -g -O2 -pthread -o rendler rendler.cpp -lmesos -lpthread -lprotobuf 
In file included from /usr/local/include/stout/stringify.hpp:26:0, 
       from /usr/local/include/stout/bytes.hpp:26, 
       from /usr/local/include/mesos/resources.hpp:29, 
       from rendler.cpp:30: 
/usr/local/include/stout/hashmap.hpp:43:32: error: expected ‘)’ before ‘<’ token 
    hashmap(std::initializer_list<std::pair<Key, Value>> list) 
           ^
rendler.cpp:345:1: error: expected ‘}’ at end of input 
} 
^ 
In file included from /usr/local/include/stout/stringify.hpp:26:0, 
       from /usr/local/include/stout/bytes.hpp:26, 
       from /usr/local/include/mesos/resources.hpp:29, 
       from rendler.cpp:30: 
/usr/local/include/stout/hashmap.hpp:40:14: error: expected unqualified-id at end of input 
    hashmap() {} 
      ^
make: *** [rendler] Error 1 

У меня есть все из перечисленных зависимостей, установленных, а также соответствующих библиотек 3 участника в правильно включить путь. Я получаю ту же ошибку при попытке скомпилировать примеры фреймворков в каталоге mesos/src/examples. Что вызывает эту ошибку?

+1

Вы забыли указать '-std = C++ 11' – NathanOliver

+0

Это исправлено; Спасибо. – atheatos

ответ

0

Этот фрагмент кода

 std::initializer_list<std::pair<Key, Value>> 
    // ^^^^^^^^^^^^^^^^^^^^^ 

вызывает ошибку

error: expected ‘)’ before ‘<’ token 

для предварительного stanadard C++ 11 компиляторов, так как std::initializer_list было раннее введено с C++ 11.

Большинство современных компиляторов, таких как GCC, позволяют установить параметр -std=c++11, который должен исправить вашу ошибку.