Переключение версий GCC (криворучко выходит на тропу войны)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Ответить
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка
Контактная информация:

Переключение версий GCC

Сообщение Kuzja »

Ну вот, доигрался. После злополучного emerge system у меня кроме косяков появился ещё и новенький GCC 3.4.4. Я захотел переключить систему на него. Сначала:

Код: Выделить всё

$ gcc-config -l
 [1] i386-pc-linux-gnu-3.3.5-20050130 *
 [2] i386-pc-linux-gnu-3.3.5-20050130-hardened
 [3] i386-pc-linux-gnu-3.3.5-20050130-hardenednopie
 [4] i386-pc-linux-gnu-3.3.5-20050130-hardenednopiessp
 [5] i386-pc-linux-gnu-3.3.5-20050130-hardenednossp
 [6] i686-pc-linux-gnu-3.4.4
 [7] i686-pc-linux-gnu-3.4.4-hardened
 [8] i686-pc-linux-gnu-3.4.4-hardenednopie
 [9] i686-pc-linux-gnu-3.4.4-hardenednopiessp
 [10] i686-pc-linux-gnu-3.4.4-hardenednossp

Затем $gcc-config 6. Да, звёздочка переместилась на 6-й пункт. Сразу заметил невозможность вызвать emerge, пишет:

Код: Выделить всё

# emerge
/usr/bin/python: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

Не запускаются некоторые программы, вот что пишет Firefox:

Код: Выделить всё

$ firefox
No running windows found
/usr/lib/mozilla-firefox/firefox-bin: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
firefox-bin exited with non-zero status (127)

Короче я с квадратными глазами быстро сделал $gcc-config 1. А не тут то было... Не переключился назад.
И вот теперь у меня возникает необходимость:
1. или сделать так, чтобы заработал новый
2. или переключить на старый
Я в растерянности :unsure:
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Дмитрий
Сообщения: 13
ОС: Gentoo Linux

Re: Переключение версий GCC

Сообщение Дмитрий »

Не знаю точно, поможет или нет, но если нужна библиотека libstdc++.so, то необходимо поставить пакет lib-compat (пишу по-памяти).
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка
Контактная информация:

Re: Переключение версий GCC

Сообщение Kuzja »

Дмитрий
Вся фича была в том, что поставить ничего уже нельзя было :)
А старый компилятор я вернул минуту назад. Уже хотел плюнуть на всё и по бырику ставить Ubuntu - у меня просто времени нет на более изысканные ходы, сессия на носу. И тут после прощального взмаха бубном старый GCC вернулся :)
Оказалось перед переключением надо в make.conf строчку CHOST="i686-pc-linux-gnu" исправить на CHOST="i386-pc-linux-gnu". Причём додумался я до этого чисто случайно.
А так бы пришлось систему сносить...
Вот только на новый компилятор так и не пересел :(.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
ValKov
Сообщения: 182
ОС: По настроению :)

Re: Переключение версий GCC

Сообщение ValKov »

Из Gentoo Linux GCC Upgrade Guide:
# emerge -uav gcc
# gcc-config i686-pc-linux-gnu-3.4.4
# source /etc/profile
Note: This assumes that you have CHOST="i686-pc-linux-gnu" set. If you are using another CHOST, please use the appropriate gcc-config line.
Warning: Do not set any GCC 3.4-specific CFLAGS such as -march=pentium-m at this time. Doing so could cause failures in your compiles. You can set these flags after you remove gcc-3.3, which will not recognize them.
To provide compatibility with binary C++ applications, sys-libs/libstdc++-v3 needs to be merged onto your system.
# emerge --oneshot sys-libs/libstdc++-v3
Now we will go about first rebuilding the system target, then the world target. This will take a very long time, depending on the number of packages that you have installed, as it will rebuild your entire toolchain and supporting system files, followed by every package on your system, including the toolchain. This is necessary to ensure that all packages have been compiled with the new toolchain, including the toolchain itself.
# emerge -e system
# emerge -e world
It is also safe to remove older GCC versions at this time.
# emerge -aC =sys-devel/gcc-3.3*
Вот и все....
Mac OS X Snow Leopard 10.6.5
Intel Core2 Duo E8400, Gigabyte GA-EP45-DS3L
2 Gb PC6400 RAM, 4 SATA HDD, 2 SATA DVD-RW
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка
Контактная информация:

Re: Переключение версий GCC

Сообщение Kuzja »

ValKov
Нет не всё :) После gcc-config у меня EMERGE НЕ РАБОТАЕТ...
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
ValKov
Сообщения: 182
ОС: По настроению :)

Re: Переключение версий GCC

Сообщение ValKov »

А что у тебя в /etc/make.conf с CHOST ? Ты вот на это обратил внимание ? :
Note: This assumes that you have CHOST="i686-pc-linux-gnu" set. If you are using another CHOST, please use the appropriate gcc-config line.
Я перешел на gcc-3.4.4 абсолютно без проблем:
$ emerge --info
Portage 2.0.51.22-r3 (default-linux/x86/2005.1, gcc-3.4.4, glibc-2.3.5-r2, 2.6.14-gentoo-r5 i686)
=================================================================
System uname: 2.6.14-gentoo-r5 i686 AMD Athlon™ 64 Processor 3500+
Gentoo Base System version 1.6.13
dev-lang/python: 2.3.5, 2.4.2
sys-apps/sandbox: 1.2.12
sys-devel/autoconf: 2.13, 2.59-r6
sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1
sys-devel/binutils: 2.16.1
sys-devel/libtool: 1.5.20
virtual/os-headers: 2.6.11-r2
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O2 -pipe"
CHOST="i686-pc-linux-gnu"
Mac OS X Snow Leopard 10.6.5
Intel Core2 Duo E8400, Gigabyte GA-EP45-DS3L
2 Gb PC6400 RAM, 4 SATA HDD, 2 SATA DVD-RW
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка
Контактная информация:

Re: Переключение версий GCC

Сообщение Kuzja »

ValKov
У меня стоит i686-pc-linux-gnu. Но для того, чоб вернуться обратно с нерабочей версии надо было менять на i386-pc-linux-gnu.
CuB
спасибо, попробую.
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
ValKov
Сообщения: 182
ОС: По настроению :)

Re: Переключение версий GCC

Сообщение ValKov »

CuB
Kuzja

Вы что, невнимательно читаете ? В моем первом посте:

To provide compatibility with binary C++ applications, sys-libs/libstdc++-v3 needs to be merged onto your system.
# emerge --oneshot sys-libs/libstdc++-v3
Mac OS X Snow Leopard 10.6.5
Intel Core2 Duo E8400, Gigabyte GA-EP45-DS3L
2 Gb PC6400 RAM, 4 SATA HDD, 2 SATA DVD-RW
Спасибо сказали:
Аватара пользователя
Kuzja
Сообщения: 675
Статус: розовая хрюшка
Контактная информация:

Re: Переключение версий GCC

Сообщение Kuzja »

ValKov
А это можно сделать перед переключением? Потому что после нельзя ;)
/Ubuntu-Dapper6/Xorg7.0/GNOME-2.14.1/
Спасибо сказали:
Аватара пользователя
ValKov
Сообщения: 182
ОС: По настроению :)

Re: Переключение версий GCC

Сообщение ValKov »

Kuzja

# emerge -uav gcc
# gcc-config i686-pc-linux-gnu-3.4.4
# source /etc/profile

В /etc/make.conf CHOST="i386-pc-linux-gnu" меняем на CHOST="i686-pc-linux-gnu" и затем ставим libstdc++-v3

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

Ну и дальше

# emerge -e system
# emerge -e world

Я делал так...
Mac OS X Snow Leopard 10.6.5
Intel Core2 Duo E8400, Gigabyte GA-EP45-DS3L
2 Gb PC6400 RAM, 4 SATA HDD, 2 SATA DVD-RW
Спасибо сказали:
Ответить