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

eselect profile list
eselect profile list
Не поможет. Профиль
Не поможет. Профиль переключить большого ума не надо. Тулчейн-то всё равно останется чистый 64-битный.
а оно тебе надо? 32битное
а оно тебе надо? 32битное "счастье"?)
Ну, скажем, wine на
Ну, скажем, wine на не-мультилибе не собирается. Мультилиб тем и хорош, что получаем 64-битную систему, способную собирать и исполнять 32-битный софт.
у мя вайн собирается норм и
у мя вайн собирается норм и 32 битный софт норм идёт, я ничо не изобретал, просто профиль сменил на 2008.0 и всё :)
А кросс-компилятор в системе
А кросс-компилятор в системе не завалялся? А изначально мультилиб не ставился? А какой был профиль прежде?
http://www.gentoo.org/doc/en/gentoo-amd64-faq.xml#multilib
не помню, но помоему
не помню, но помоему мультилиб как раз включился с одним и с профелей ;)
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, а потом провести обратную процедуру. Результатом будете удивлены.
на досуге сделаю :)
на досуге сделаю :)
В gcc-config -l точно ничего
В gcc-config -l точно ничего больше нет? :)
gremlin@deathstar ~ $
gremlin@deathstar ~ $ gcc-config -l
[1] x86_64-pc-linux-gnu-4.3.3 *
:D
Переход с мультилиба на
Переход с мультилиба на не-мультилиб и обратно мог пройти гладко, если не пересобирался тулчейн. Аналогично, и Вайн будет собираться на не-мультилиб системе, если после смены профиля у glibc и gcc остался флаг multilib. (В сущности это означает, что никакого перехода не было. Смена профиля -- это лишь декларация о намерениях; реальный переход -- это пересборка тулчейна и мира.)
у мя традиция как тока
у мя традиция как тока выходит новый binutils или gcc или glibc, то я делаю -е world :)
проверил) теперь немогу с
проверил) теперь немогу с nomultilib слезть))) профиль сменил gcc, glibc не собирается)))
Мои поздравления. ;) Ну,
Мои поздравления. ;) Ну, инструкцию я писал именно для таких случаефф.
))
))
Как я понял ты просто сделал
Как я понял ты просто сделал чрут на 64б(livecd) сделал сборку glibc,gcc,binutils с мультилиб, собрал пакеты и установил в no-multilib?
Примерно так, ага. Только в
Примерно так, ага. Только в чруте достаточно собрать один glibc с мультилиб. Затем бинарник распаковывается в основной системе, и пересобирается тулчейн и мир.
Кстати, пока ты не вернулся
Кстати, пока ты не вернулся на мультилиб, можешь проверить, Вайн собирается? Или это у меня были какие-то локальные косяки?
wine скорей всего не
wine скорей всего не соберётся, но я сёдня попробую)
Всё пытаюсь перелезть на
Всё пытаюсь перелезть на мультилиб...глибц собрал с поддержкой мультилиба, а гцц...вот:
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