Смена профиля с no-multilib на multilib-enabled

Недавно столкнулся с необходимостью смены профиля на multilib. Порывшись в сети, не обнаружил ни одной инструкции на эту тему (а официальная документация Генты вообще утверждает, что такое невозможно), поэтому в ходе манипуляций написал собственную. Возможно, кому-то пригодится: http://vladmiller.info/blog/index.php?comment=145

Изображение пользователя Gremlin.

eselect profile list

eselect profile list

Не поможет. Профиль

Не поможет. Профиль переключить большого ума не надо. Тулчейн-то всё равно останется чистый 64-битный.

Изображение пользователя Gremlin.

а оно тебе надо? 32битное

а оно тебе надо? 32битное "счастье"?)

Ну, скажем, wine на

Ну, скажем, wine на не-мультилибе не собирается. Мультилиб тем и хорош, что получаем 64-битную систему, способную собирать и исполнять 32-битный софт.

Изображение пользователя Gremlin.

у мя вайн собирается норм и

у мя вайн собирается норм и 32 битный софт норм идёт, я ничо не изобретал, просто профиль сменил на 2008.0 и всё :)

А кросс-компилятор в системе

А кросс-компилятор в системе не завалялся? А изначально мультилиб не ставился? А какой был профиль прежде?
http://www.gentoo.org/doc/en/gentoo-amd64-faq.xml#multilib

не помню, но помоему

не помню, но помоему мультилиб как раз включился с одним и с профелей ;)

Изображение пользователя Gremlin.

Available profile symlink

Available profile symlink targets:
[1] default/linux/amd64/2008.0 *
[2] default/linux/amd64/2008.0/desktop
[3] default/linux/amd64/2008.0/developer
[4] default/linux/amd64/2008.0/no-multilib
[5] default/linux/amd64/2008.0/server
[6] hardened/amd64
[7] hardened/amd64/multilib
[8] selinux/2007.0/amd64
[9] selinux/2007.0/amd64/hardened
[10] hardened/linux/amd64

[ebuild U ] sys-devel/gcc-4.3.3-r2 [4.3.2-r2] USE="fortran gtk mudflap (multilib) nls openmp (-altivec) -bootstrap -build -doc (-fixed-point) -gcj (-hardened) -ip28 -ip32r10k -libffi -multislot (-n32) (-n64) -nocxx -nopie -objc -objc++ -objc-gc -test -vanilla" 0 kB

Да фиг с ним, с профилем.

Да фиг с ним, с профилем. Профиль -- это просто набор включенных/выключенных юз-флагов и замаскированных/размаскированных пакетов (грубо говоря). Но тулчейн (gcc+glibc) от смены профиля не начинает чудесным образом собирать 32-битный код.

Сомневающимся предлагаю переключиться на no-multilib-профиль, сделать emerge binutils glibc gcc, emerge -e world, а потом провести обратную процедуру. Результатом будете удивлены.

Изображение пользователя Gremlin.

на досуге сделаю :)

на досуге сделаю :)

В gcc-config -l точно ничего

В gcc-config -l точно ничего больше нет? :)

Изображение пользователя Gremlin.

gremlin@deathstar ~ $

gremlin@deathstar ~ $ gcc-config -l
[1] x86_64-pc-linux-gnu-4.3.3 *
:D

Переход с мультилиба на

Переход с мультилиба на не-мультилиб и обратно мог пройти гладко, если не пересобирался тулчейн. Аналогично, и Вайн будет собираться на не-мультилиб системе, если после смены профиля у glibc и gcc остался флаг multilib. (В сущности это означает, что никакого перехода не было. Смена профиля -- это лишь декларация о намерениях; реальный переход -- это пересборка тулчейна и мира.)

Изображение пользователя Gremlin.

у мя традиция как тока

у мя традиция как тока выходит новый binutils или gcc или glibc, то я делаю -е world :)

Изображение пользователя Gremlin.

проверил) теперь немогу с

проверил) теперь немогу с nomultilib слезть))) профиль сменил gcc, glibc не собирается)))

Мои поздравления. ;) Ну,

Мои поздравления. ;) Ну, инструкцию я писал именно для таких случаефф.

Изображение пользователя Gremlin.

))

))

Изображение пользователя Gremlin.

Как я понял ты просто сделал

Как я понял ты просто сделал чрут на 64б(livecd) сделал сборку glibc,gcc,binutils с мультилиб, собрал пакеты и установил в no-multilib?

Примерно так, ага. Только в

Примерно так, ага. Только в чруте достаточно собрать один glibc с мультилиб. Затем бинарник распаковывается в основной системе, и пересобирается тулчейн и мир.

Кстати, пока ты не вернулся

Кстати, пока ты не вернулся на мультилиб, можешь проверить, Вайн собирается? Или это у меня были какие-то локальные косяки?

Изображение пользователя Gremlin.

wine скорей всего не

wine скорей всего не соберётся, но я сёдня попробую)

Изображение пользователя Gremlin.

Всё пытаюсь перелезть на

Всё пытаюсь перелезть на мультилиб...глибц собрал с поддержкой мультилиба, а гцц...вот:
checking for x86_64-pc-linux-gnu-gcc... /var/tmp/portage/sys-devel/gcc-4.4.0/work/build/./gcc/xgcc -B/var/tmp/portage/sys-devel/gcc-4.4.0/work/build/./gcc/ -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -isystem /usr/x86_64-pc-linux-gnu/sys-include -m32
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: in `/var/tmp/portage/sys-devel/gcc-4.4.0/work/build/x86_64-pc-linux-gnu/32/libgcc':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.
make[2]: *** [configure-stage1-target-libgcc] Ошибка 1
make[2]: Leaving directory `/var/tmp/portage/sys-devel/gcc-4.4.0/work/build'
make[1]: *** [stage1-bubble] Ошибка 2
make[1]: Leaving directory `/var/tmp/portage/sys-devel/gcc-4.4.0/work/build'
make: *** [bootstrap-lean] Ошибка 2