2014-04-25 2 views
0

Итак, ранее я попытался скомпилировать выражение lambda в C++, мой компилятор по умолчанию был gcc-4.4, и, как вы знаете, он не поддерживает лямбда-выражения, поэтому я попытался установить более новую версию gcc- 4.7, установка работала успешно, но после этого я не смог скомпилировать ни одну из моих программ.downgrading g ++ после смены версии

Я попытался восстановить предыдущую версию gcc, но варианты обновлений для меня не работают.

-errors:

In file included from /usr/local/include/htmlcxx/html/ParserDom.h:5:0, 
      from urlServer.cpp:7: 
    /usr/local/include/htmlcxx/html/tree.h:118:21: error: ‘ptrdiff_t’ does not name a type 
    urlServer.cpp: In lambda function: 
    urlServer.cpp:148:29: error: ‘urlHash’ is not captured 
    urlServer.cpp:148:38: error: return-statement with a value, in function returning   'void' [-fpermissive] 
    In file included from /usr/local/lib/gcc/i686-pc-linux-   gnu/4.7.1/../../../../include/c++/4.7.1/algorithm:63:0, 
       from urlServer.cpp:5: 
    /usr/local/lib/gcc/i686-pc-linux- gnu/4.7.1/../../../../include/c++/4.7.1/bits/stl_algo.h: In instantiation of ‘_InputIterator std::__find_if(_InputIterator, _InputIterator, _Predicate,   std::input_iterator_tag) [with _InputIterator = std::istream_iterator<std::basic_string<char> >; _Predicate =  writeAllLinks(std::list<std::basic_string<char> >)::<lambda(const string&)>]’: 
    /usr/local/lib/gcc/i686-pc-linux- gnu/4.7.1/../../../../include/c++/4.7.1/bits/stl_algo.h:4490:41: required from ‘_IIter  std::find_if(_IIter, _IIter, _Predicate) [with _IIter = std::istream_iterator<std::basic_string<char> >; _Predicate =  writeAllLinks(std::list<std::basic_string<char> >)::<lambda(const string&)>]’ 
    urlServer.cpp:148:39: required from here 
    usr/local/lib/gcc/i686-pc-linux- gnu/4.7.1/../../../../include/c++/4.7.1/bits/stl_algo.h:146:7: error: void value not ignored as it ought to be 

Я использую Debian

вопрос: как я могу восстановить предыдущую версию GCC?

Я знаю, что этот вопрос уже задан, но я не смог найти ответ, и я пробовал все, что мог, спасибо;

+3

Когда вы говорите, что вы «не смогли скомпилировать ни одну из моих программ», не могли бы вы рассказать об этом? Какие ошибки вы получаете? Может быть, было бы проще помочь вам решить эту проблему, чем вернуться к старому компилятору? –

+1

Ваше название предлагает другой вопрос, что то, что на самом деле спрошено (новый компилятор «не работает» по сравнению с предыдущим компилятором). –

+0

ty для вашей помощи, ребята, я обновил вопрос и поставил ошибки, в которые я попал; htmlcxx - это библиотека для извлечения url из html-файла. – Reda

ответ

1

1) Просто установите пакет снова с вашим менеджером пакетов вашего дистрибутива Linux. В вашем инструменте также должно быть что-то вроде пакета ремонта или других аналогичных параметров. Не забывайте, что вам нужна действительная комбинация binutils/gcc/libc/g ++/libg ++. Возможно, ваш дистрибутив содержит мета-пакет для разработки, содержащий все необходимые пакеты.

2) Вы можете установить несколько версий компилятора параллельно. Просто вы должны указать --prefix = для своих параметров конфигурации. Для версий я использую /opt/linux-gnu-gcc4.x.x. Использование пути/opt - обычная практика, чтобы не сталкиваться с пакетами вашего дистрибутива.

3) Проблема, что вы не могли скомпилировать какую-либо программу вообще, не является хорошим описанием проблемы. Для меня звучит так, что у вас есть смешанный набор заголовков библиотеки для проблемы несовместимых заголовков. Никто не может понять, что вы делаете, без более подробного описания ошибок. Но вы должны начать с 1)

+0

ty, это решило проблему – Reda

Смежные вопросы