Intereting Posts
Как использовать grep и вырезать скрипт для получения URL-адресов веб-сайтов из файла HTML Как скопировать список файлов и настроить имена файлов назначения на лету? Извлечь текстовый слой из PSD (ImageMagick или GiMP) Как скопировать символические ссылки как символические ссылки с одной машины на другую? Различные форматы заголовков для разных приложений терминалов? Правильное совпадение слов Почему недавнее обновление Ubuntu 14.04 испортило мою подсказку PS1? Как получить UUID раздела и определить переменную Bash как равную ей? Как восстановить потерянную таблицу разделов gpt? Какова настройка в bash для globbing, чтобы контролировать, совпадает ли * с точечными файлами что означает «gbp: error: upstream / 1.5.13 не является допустимым деревом»? Ошибка Malloc после запуска chown -R on / usr / blockdev –setro не работает (по крайней мере для меня) Поиск сценария для преобразования имени файла с обратной косой чертой в структуру каталогов с файлами Как плавать окно с WM_NAME, но без WM_CLASS

Пакеты для восстановления после обновления gcc на системах gentoo

Какие пакеты следует перестроить после обновления gcc в системе gentoo? Достаточно ли запускать

 # emerge -a --oneshot `equery depends gcc |awk '{print " ="$1}'` 

как было предложено для perl в этом FAQ ?

TL; DR

У меня другое дело, как пользователь Gentoo. Хотя я согласен с подходом петерфа «Let the System Decide», я не согласен, когда дело доходит до обновления ABI . Обновление ABI иногда является серьезным сдвигом в поведении. В случае GCC 4.7, ABI Change было принятием нового стандарта C ++ 11, который также указал на peterph.

Вот почему я пишу этот ответ. Я нормальный наркоман. Я начал работать в веб-мире, когда было около 4 разных браузеров и множество тегов в HTML, которые поддерживались только некоторыми браузерами. В то время все эти теги приводили к путанице, и ИМО прилагала больше усилий. C ++ был стандартизирован по этой же причине, короче, чтобы вы могли скомпилировать код, который я пишу, и я могу скомпилировать код, который вы пишете . Если мы решили не следовать стандарту, мы теряем свободу делиться.

C ++ 98 был утвержденным стандартом на 13 лет. C ++ 11 был ратифицирован Комитетом ИСО в 2011 году и полностью интегрирован в GCC 4.7. См. Текущий статус ISO и новый стандарт ISO .


Почему мы должны чувствовать себя привилегированными как пользователи Gentoo

Как пользователи дистрибутива на основе источника, у нас есть уникальная возможность сформировать будущее поведение пакета, потому что мы скомпилируем его, прежде чем мы его используем. Поэтому, чтобы подготовиться к этой возможности, я чувствую, что при обновлении нового компилятора необходимо запустить следующие команды:

 emerge -ev system gcc-config -l && gcc-config *new compiler name* env-update && source /etc/profile emerge -1v libtool emerge -ev system 

Первый проход через систему создает новый компилятор и его зависимости со старым компилятором. Второй проход через систему перестраивает новый компилятор и его зависимости с новым компилятором. В частности, мы хотим сделать это, чтобы наша сборка Chain использовала новые функции нового компилятора, если также были обновлены пакеты Build Chain … Некоторые люди заменяют второй проход через систему мировым набором, хотя я что это слишком много, поскольку мы не знаем, какие пакеты уже поддерживают новый стандарт, но мы хотим, чтобы наша цепочка сборки вела себя здорово.

Выполняя это, по крайней мере, в системном наборе, готовит нас к тестированию каждого пакета, который мы собираем против нового стандарта, потому что мы используем скользящий выпуск. Таким образом, добавление -std=c++11 в CXXFLAGS после обновления цепочки сборки позволяет нам тестировать на предмет поломки и иметь возможность отправлять ошибки непосредственно в нашу bugzilla или вверх по потоку к фактическим разработчикам по простой причине:

Эй, ваш пакет blah blah разбивается с использованием нового стандарта C ++, и я подключил свой журнал сборки.

Я считаю это любезностью для разработчиков, так как теперь у них есть время для подготовки, поскольку стандарт становится все более широко принятым, а старый стандарт постепенно прекращается. Представьте себе волнение со стороны разработчиков, если он получил сотни ошибок, потому что он или она ждал, пока стандарт не будет отменен …

Ни один другой дистрибутив, который я знаю, не может использовать этот метод, поскольку фактические поддерживающие пакеты существуют как посредники, прежде чем патч или обновление могут быть использованы соответствующим сообществом пользователей. У нас есть сопровождающие, но у нас также есть возможность использовать локальное дерево порталов.


Что касается проницательных мыслей, опубликованных в запросе Bounty

Я не знаю, была ли отмечена награда, потому что вам нравятся мои проницательные, хорошо продуманные ответы, но в попытке щедрости я попытаюсь ответить на ваше проницательное, хорошо продуманное предложение щедрости. Во-первых, позвольте мне сказать в ответ, что, будучи пользователем дистрибутива на основе источника, я твердо верю, что соединения точек – это все, о чем вы просили в своем запросе на награду. Кто-то может быть отличным кодером, но с дерьмовой заботой о программном обеспечении. Точно так же есть люди, которые являются дерьмовыми кодерами, которые очень заботятся о программном обеспечении.

До того, как я приехал сюда, я был страстным плакатом на форумах Gentoo . Наконец я понял, когда начал приходить сюда, чтобы у каждого был определенный талант, который они могут использовать. Это то, что они предпочитают делать с этим, что делает разницу в взносах. Некоторые из нас – великие авторы (не я), поэтому, если вы хотите внести свой вклад в какой-либо проект, но вы не можете или не можете писать код или исправлять ошибки, помните, что великие авторы могут писать отличную документацию или отличные статьи Wiki ,

Стандарт существует по другой причине: в Сообществе из его членов ожидаются определенные правила . Следуйте этому утверждению здесь. Если я отправлю исправление, исправление, улучшение и т. Д., И нет стандартов, патч будет работать только в ситуациях, которые я считаю важными, то есть, если я использую компилятор whizbang 2.0, а патч построен против whizbang компилятора 1.0, он не удастся. Поскольку усилия для сообщества, сообщество ожидает, что все будет работать в большинстве ситуаций, поэтому вместо того, чтобы заставить всех пользователей перейти на компилятор 2, я могу предусмотреть в стандарте:

Этот пакет позволяет разрешить обратную совместимость с Whizbang Compiler 1.0

Таким образом, как разработчик, crappy coder или нет, я знаю, что я должен использовать или, по крайней мере, тестировать компилятор версии 1.0. Как пользователь, с другой стороны, я могу выбрать то, что я хочу сделать. Если я недоволен, я могу запросить патч, отправив ошибку или другую крайность «Это программное обеспечение – это часть дерьма!» И ничего не делать. Несмотря на это, пользователь и разработчик понимают стандарт, потому что он написан.

Преодоление разрыва принимает действие определенной формы со стороны пользователя, и для этого требуются все, что вы просили меня, а другие – комментировать, и мы должны полагаться на сообщество пользователей, и их таланты всех форм преодолевают этот пробел. Если вы решите стать одним из участников, я приветствую вас. Для тех из вас, кто решил быть неактивным, помните, что если вы хотите что-то исправленное, вам нужны активные. Поэтому я говорю вам, не стесняйтесь сообщать об ошибке или сообщать нам, что нам нужно обновлять документацию, и если мы грубо говорим нам или находим кого-то еще, пока вы не найдете свою область знаний.


Другие интересные чтения, связанные с этой темой

  1. Самые большие изменения в C ++ 11 (и почему вы должны заботиться)
  2. Поддержка C ++ 0x / C ++ 11 в GCC
  3. Новости, статус и обсуждение стандартного C ++

Это зависит от того, какого рода модификация компилятора вы сделали. Если это было существенным, то все должно быть перекомпилировано *) из-за возможных изменений в ABI компилятором. Во многих случаях это не понадобится, но если ваши пакеты зависят от чего-то вроде C ++ 11, тогда у вас могут возникнуть проблемы – см., Например, новости Gentoo об изменении ABI в GCC 4.7 или GCC bugzilla .

*) Обратите внимание на акцент на «перекомпилированный» – это определенно не имеет смысла перекомпилировать (перечитать) приложение Python или Perl, потому что вы сменили компилятор C. Если только он не имеет нативного компонента (что хорошо).