В началоРуководство Gentoo Linux по обновлению GCC → Обновление GCC на новой установке
Gentoo-doc HOME Пред.: Переход с GCC-3.3 на 3.4 или более новыйВ началоУровень выше: Руководство Gentoo Linux по обновлению GCCСлед.: Обычные грабли

4. Обновление GCC на новой установке

4.1. Введение

Обновление 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.

Листинг 12. Установка libstdc++-v3

# emerge --oneshot sys-libs/libstdc++-v3


4.2. Использование revdep-rebuild

Этот способ требует, чтобы вы сначала установили пакет 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. Это заставит пакеты пересобираться, основываясь на именах пакетов, вместо точного имени и версии.

4.3. Использование emerge -e

Этот способ, будучи гораздо медленнее, пересобирает всю систему, гарантируя, что все пересобрано новым компилятором. Это необязательно, но допустимо, если вы также изменяете переменную среды CFLAGS или другие переменные make.conf, которые влияют на компиляцию системы.

Так как эти действия выполняются сразу после первоначальной установки, не потребуется перекомпилировать world, как мы поступили бы для обновления компилятора в ранее установленной системе. Однако, для пущей уверенности в том, что обновлены все пакеты, можно запустить обновление цели world вместо system.

Листинг 14. Пересборка system

# emerge -e system


4.4. Очистка

Теперь можно удалить старые версии GCC, не вызывая проблем. Выражение ВАША-НОВАЯ-ВЕРСИЯ-GCC замените номером версии, на которую вы перешли:

Листинг 15. Очистка

# emerge -aC "<sys-devel/gcc-ВАША-НОВАЯ-ВЕРСИЯ-GCC"


Пред.: Переход с GCC-3.3 на 3.4 или более новыйВ началоУровень выше: Руководство Gentoo Linux по обновлению GCCСлед.: Обычные грабли
В началоРуководство Gentoo Linux по обновлению GCC → Обновление GCC на новой установке