В начало → Руководство Gentoo Linux по обновлению GCC → Обновление GCC на новой установке |
Обновление GCC в системе после установки из архива третьей стадии (stage3) — дело простое. Отсутствие изобилия установленных программ, которые ссылаются на старую версию GCC — это преимущество пользователей, только что установивших систему. В следующем примере показывается обновление с GCC-3.3 на 3.4 или более новые версии. При обновлении с других версий GCC будут кое-какие отличия. Например, имена библиотек, используемые ниже для revdep-rebuild, относятся к версии GCC 3.3, также, как и необходимость установки libstdc++-v3.
Пока пользователь не внес каких-либо изменений в систему, для получения системы с новой версией GCC нужно всего несколько шагов. Также, как и при обновлении с GCC-3.3 до 3.4, у пользователя есть две возможности. Но, в отличие от обновления с GCC-3.3 до 3.4, здесь обновление проще, так как различий между способами меньше. Первый способ быстрее, и задействует программу revdep-rebuild из пакета gentoolkit, подобно вышеописанной процедуре обновления. Использование revdep-rebuild предполагает пересборку только тех пакетов, которые действительно ссылаются на библиотеки GCC, тогда как при втором способе система полностью перекомпилируется с новой версией GCC, что занимает намного больше времени. Второй способ никогда не потребуется, и описан только для полноты картины.
Приведенные первые шаги одинаковы для обоих способов, и должны делаться в любом случае.
Листинг 11. Обновление GCC
#
emerge -uav gcc
(вместо "i686-pc-linux-gnu-3.4.5" укажите обновленную версию GCC и настройки CHOST)#
gcc-config i686-pc-linux-gnu-3.4.5
#
source /etc/profile
(пересборка libtool)#
emerge --oneshot -av libtool
Для обеспечения совместимости с более старыми двоичными приложениями C++, надо установить в систему пакет sys-libs/libstdc++-v3.
Этот способ требует, чтобы вы сначала установили пакет gentoolkit, если это еще не сделано. Затем запустите программу revdep-rebuild, чтобы просканировать установленные пакеты, найти и пересобрать нужные.
Листинг 13. Установка gentoolkit и запуск revdep-rebuild
#
emerge -an gentoolkit
#
revdep-rebuild --library libstdc++.so.5 -- -p -v
#
revdep-rebuild --library libstdc++.so.5
Возможно, у вас появятся проблемы с несуществующими версиями пакетов из-за того, что они устарели или замаскированы. В этом
случае можно при запуске revdep-rebuild указать параметр --package-names
. Это заставит пакеты пересобираться, основываясь на именах пакетов, вместо точного имени и версии.
Этот способ, будучи гораздо медленнее, пересобирает всю систему, гарантируя, что все пересобрано новым компилятором. Это необязательно,
но допустимо, если вы также изменяете переменную среды CFLAGS
или другие переменные make.conf
, которые влияют на компиляцию системы.
Так как эти действия выполняются сразу после первоначальной установки, не потребуется перекомпилировать world, как мы поступили бы для обновления компилятора в ранее установленной системе. Однако, для пущей уверенности в том, что обновлены все пакеты, можно запустить обновление цели world вместо system.
В начало → Руководство Gentoo Linux по обновлению GCC → Обновление GCC на новой установке |