1 |
Gleb Litvjak пишет:
|
2 |
|
3 |
> Первый раз gcc 3.4 будет собран c помощью gcc 3.3 и слинкован с glibc, |
4 |
> который собран с gcc 3.3. Второй раз gcc 3.4 будет собран с помощью gcc 3.4, |
5 |
> который был собран с помощью gcc 3.3, и слинкован с glibc, который был собран |
6 |
> с помощью gcc 3.4, собранного с gcc 3.3. Лучше пересобрать и третий раз. |
7 |
если вы не знаете, то gcc сам по себе два раза собирается
|
8 |
первый раз он собирает новую версию, а затем снова пересобирает сам себя
|
9 |
т.е. 3.3 -> 3.4, 3.4-> 3.4
|
10 |
а вообще тут весной статья пробегала http://gentoo.ru/new/node/193
|
11 |
так вот совет из неё
|
12 |
------------//------------------------
|
13 |
* Обновление одного из пакетов входящих в toolchain.
|
14 |
- Если обновляется хотя-бы один из linux-headers, glibc, binutils или gcc,
|
15 |
то рекомендуется пересобрать их дважды, после чего весь system, после
|
16 |
чего весь world.
|
17 |
Цель двойной компиляции toolchain - получить гарантированно стабильный и
|
18 |
корректный toolchain не зависящий от предыдущего.
|
19 |
Перекомпилировать system/world после этого жёсткой необходимости нет,
|
20 |
по крайней мере если остальной софт продолжает работать (возможно даже
|
21 |
используя библиотеки из старого toolchain - см. предыдущие пункты об
|
22 |
апгрейде).
|
23 |
Цель перекомпиляции system/world - чтобы весь софт получил потенциальное
|
24 |
преимущество от установки нового toolchain. system перекомпилируется
|
25 |
перед world из тех-же соображений, т.к. при компиляции программ из world
|
26 |
используются утилиты из system.
|
27 |
- Если увеличивается первая или вторая цифра версии gcc, то перед второй
|
28 |
сборкой нужно переключиться на новую версию через gcc-config - иначе
|
29 |
новый gcc просто установится параллельно со старым в "новый слот" но
|
30 |
по умолчанию использоваться будет старый.
|
31 |
- При сборке system после двойной перекомпиляции toolchain нет
|
32 |
необходимости опять компилировать toolchain как часть system.
|
33 |
Аналогично при сборке world после system нет небходимости опять
|
34 |
компилировать пакеты из system как часть world. Это можно попробовать
|
35 |
обойти либо вручную, либо используя скрипты из
|
36 |
http://forums.gentoo.org/viewtopic.php?t=282474 либо через бинарные
|
37 |
пакеты и `emerge -k` (я предпочитаю последний вариант).
|
38 |
- Итого, рекомендованный набор команд:
|
39 |
# для того, чтобы безопасно использовать `emerge -k` нужно очистить
|
40 |
# каталог с текущими бинарными пакетами
|
41 |
# (напр., переместить его в /tmp/portage-packages)
|
42 |
pkgdir=$(portageq pkgdir)
|
43 |
mv $pkgdir /tmp/portage-packages
|
44 |
install -d -o portage -g portage $pkgdir
|
45 |
# первая сборка toolchain
|
46 |
emerge linux-headers glibc binutils gcc-config gcc
|
47 |
# выбрать новый gcc если он установился в новый слот
|
48 |
gcc-config имя_или_номер_нового_gcc # см. `gcc-config -l`
|
49 |
source /etc/profile
|
50 |
# компиляция toolchain с созданием бинарных пакетов
|
51 |
emerge -b glibc binutils gcc portage
|
52 |
emerge -bke system # не компилить glibc, binutils и gcc
|
53 |
emerge -bke world # не компилить предыдущие пакеты (включая system)
|
54 |
------------//------------------------
|
55 |
|
56 |
--
|
57 |
Да здравствует то, благодаря чему мы, несмотря ни на что.(c) Задорнов
|
58 |
Registered Linux User #317544
|
59 |
Linux 2.6.14.2 i686 AMD Athlon(tm) XP 2200+
|
60 |
--
|
61 |
gentoo-user-ru@g.o mailing list |