Рабочая версия GCC не соответствует появившейся версии

412
Athan Clark

Вот вывод из моего поиска portage для gcc:

emerge -s gcc

... * sys-devel/gcc Latest version available: 4.6.3 Latest version installed: 4.6.3 Size of files: 70,353 kB Homepage: http://gcc.gnu.org/ Description: The GNU Compiler Collection License: GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+ ... 

Все же, когда я делаю gcc --version, я получаю это:

gcc (Gentoo 4.5.4 p1.0, pie-0.4.7) 4.5.4 

Есть идеи? Мне нужно использовать C ++ 11 для проекта, который я пытаюсь скомпилировать, но я понятия не имею, что делать. Заранее спасибо!!

1

2 ответа на вопрос

2
Athan Clark

You have to use gcc-config. It's basically an eselect version for gcc. Follow the gentoo gcc upgrade guide here:

http://www.gentoo.org/doc/en/gcc-upgrading.xml

0
Sepahrad Salour

emerg основан на Python и читает стандартные файлы .ebuild, расположенные в / usr / portage. Файлы ebuild описывают, как источник должен быть настроен и установлен, в зависимости от переменных, установленных в /etc/make.conf.

Возможно, в новой версии GCC файл .ebuild не обновляется. и вы видите неправильную версию.

GCC 4.5, который у вас есть, не поддерживает следующие параметры:

  1. Rvalue ссылки для * этого
  2. Инициализаторы нестатических элементов данных
  3. Псевдонимы шаблона
  4. Константа нулевого указателя
  5. Форвардные декларации для перечислений
  6. Обобщенные атрибуты
  7. Обобщенные константные выражения
  8. Поддержка выравнивания
  9. Делегирующие конструкторы
  10. Наследование конструкторов
  11. Расширенные объявления друзей и многие другие варианты ...

GCC 4.8 полностью поддерживает C ++ 11. Попробуйте обновить ваш компилятор до последней версии.

Вы знаете, как изменить ebuild, чтобы он обновлялся? Спасибо за помощь, я попытаюсь найти новую версию gcc, которая была скомпилирована. Athan Clark 11 лет назад 0
Для обновления вашего GCC слишком просто использовать `apt-get update; apt-get upgrade` в базе Debian или команда `yum update` в Redhat Base Linux. Эта команда обновляет все старые пакеты. Sepahrad Salour 11 лет назад 0
Я использую Gentoo, ха-ха. Отсюда и возникновение / портье, хаха. Athan Clark 11 лет назад 0

Похожие вопросы