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

перезагрузка в однопользовательский режим нажимает, когда Вы видите меню личинки и добавляете 1 в конец Вашего ядра args.

оттуда Вы сможете зафиксировать что-либо, что Вы должны

12
13.04.2017, 15:37
2 ответа

TL;DR

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

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

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


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

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

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

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

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

Эй, ваш пакет бла-бла-бла-бла-брывается, используя новый стандарт C++ и Я прикрепил свой журнал регистрации.

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

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


Относительно Незнающих Мыслей, опубликованных в Запросе о вознаграждении

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

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

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

Этот пакет выбирает вариант обратной совместимости с Whizbang Compiler 1.0

Таким образом, как разработчик, дрянной кодер или нет, я знаю, что должен использовать или, по крайней мере, протестировать против компилятора версии 1.0. С другой стороны, как пользователь, я могу выбирать, что мне делать. Если я несчастлив, я могу запросить заплатку, отправив ошибку или другую крайность "Это программное обеспечение - кусок дерьма!", и ничего не делать. Независимо от этого, пользователь и разработчик понимают стандарт, потому что он написан.

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


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

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

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

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

3
27.01.2020, 19:55

Теги

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