Войти

Показать полную графическую версию : Установка/обновление GCC


Страниц : [1] 2

SirHenry
20-05-2003, 15:16
Приветствую, All!
---
Как бы сабж провернуть?
Попутно, еще несколько вопросов:
Какие еще либы/программы нужно будет обновлять перед/после сабж(а)?
Каковы возможные последствия "кривой" установки gcc?
Есть ли дока (желательно на русском), *описывающая по шагам процесс обновления уже установленного компилятора?
---
Вроде все вопросы пока :-)

Исправлено: SirHenry, 16:18 20-05-2003

Zur0
20-05-2003, 18:19
Какие еще либы/программы нужно будет обновлять перед/после сабж(а)?
После еще можно glibc обновить. А лучше до.

Последствий почти никаих. Возмеш да с рпм'ки переставиш.

А инструкция step-by-step -- LFSBook :gigi:
Постараешся и на русском найдеш

SirHenry
21-05-2003, 14:03
2 Zur0
После еще можно glibc обновить. А лучше до.
}{m, а если ставить компилятор gcc-3.3, то какой до какой версии следует обновлять glibс?

Zur0
21-05-2003, 18:04
glibc-2.3.2 сейчас последняя еси не ошибаюсь.
}{m, а если ставить компилятор gcc-3.3,
А тебе оно надо. ИМХО пока лучше 3.2.3

ruslandh
22-05-2003, 00:30
SirHenry
Я думаю при установке нового gcc Вы это быстро выясните :)

SirHenry
22-05-2003, 13:09
ruslandh
Вы это быстро выясните
Да уж... Но хотелось бы сначала солому подложить :biggrin:
2All:
Из LFSbook читаю:
"Для инсталляции GCC выполните приведенные ниже команды:
configure --prefix=/usr --enable-shared --enable-languages=c,c++ --enable-threads=posix --with-slibdir=/lib
--enable-__cxa_atexit --enable-clocale=gnu &&
make bootstrap &&
make install &&
Вроде сделал по написанному... gcc -v заявляет, что стоит версия 3.3.... А вот компиляция ядра (пробовал 2.4.21-pre2 и 2.4.20) заканчивается ошибкой.... хотя на старом компиляторе (2.96 вроде) оно собиралось весело и задорно...
В чем проблема может заключаться?

Zur0
22-05-2003, 18:30
заканчивается ошибкой
Ошибку в студию....

ruslandh
23-05-2003, 00:09
SirHenry
В принципе могут появляться ошибки из-за тонкостей синтаксиса различных версий gcc. Т.е не всякий программный продукт, который транслируется в одной версии gcc будет транслироваться в другой. Конечно можно исправить исходный текст, но ... Причем независимо от того какой вариант рассматривать - переход со старшей версии на младшую, или обратно.
Что поделаешь - специфика Linux :(
PS Интересно - а в каком "живом" дистрибутиве ядро собрано на gcc 3.x ?
В больинстве мне известных просто есть механизм смены текущего gcc c одной версии на другую. И это будет продолжаться до тех пор, пока :
1 gcc версии 3.x будет выдавать такой-же безошибочный продукт, что и gcc 2.96. Пока-же все ответственные пакеты транслируются в gcc 2.96 *
2 в каком-нибудь RPM/Deb дистрибутиве все *пакеты ни будут собраны на gcc 3.x. (А с учетом того, что к тому времени появится какой-нибудь gcc 4.x ...)

Zur0
23-05-2003, 05:03
"Для инсталляции GCC выполните приведенные ниже команды:
насколько я помню там не make install а make install-no-fixedincludes
А gcc-2.96 имеет опции оптимизации под конкретный процессор?




Исправлено: ruslandh, 8:09 23-05-2003

SirHenry
23-05-2003, 12:32
Zur0
Ошибку в студию....
Этим все и заканчивается:
make[2]: Выход из каталог `/usr/src/linux-2.4.20/arch/i386/lib'
make[1]: Выход из каталог `/usr/src/linux-2.4.20/arch/i386/lib'
ld -m elf_i386 -T /usr/src/linux-2.4.20/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o init/do_mounts.o \
--start-group \
arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o \
drivers/acpi/acpi.o drivers/parport/driver.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/char/agp/agp.o drivers/char/drm/drm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/video/video.o drivers/media/media.o \
net/network.o \
/usr/src/linux-2.4.20/arch/i386/lib/lib.a /usr/src/linux-2.4.20/lib/lib.a /usr/src/linux-2.4.20/arch/i386/lib/lib.a \
--end-group \
-o vmlinux
net/network.o: In function `rtnetlink_rcv':
net/network.o(.text+0xd5f7): undefined reference to `rtnetlink_rcv_skb'
make: *** [vmlinux] Ошибка 1
насколько я помню там не make install
Сделал по прочитанному :) А в чем разница между make install и make install-no-fixedincludes?
ruslandh
В больинстве мне известных просто есть механизм смены текущего gcc c одной версии на другую
Чуть подробнее можно эту тему раскрыть? А то изобретаю велосипед, когда уже все придумано до нас! :)

Zur0
23-05-2003, 16:14
Ну ошибка похоже не при компиляции, а при ликовании...
А в чем разница между make install и make install-no-fixedincludes?
при выполнении make install-no-fixedincludes, не запускается скрипт fixedincludes,
который проверяет какие системные библиотеки пора обновить. Проблема в том, что эти хедыры, могут быть не совместимы с версий glibc, которая установлена на компе, а результат тому -- глюки. :gigi:
Сделал по прочитанному
На заборах, и не то пишут. Не бось для версии 3.2 прочитал? Советую брать CVS версию LFSBook'a, так как она лучше отображает положение дел (например многие патчи уже не нужны).

ruslandh
23-05-2003, 21:27
SirHenry
Я просто не знаю как смена версии gcc организована в вашем дистрибутиве :(

Zur0
24-05-2003, 07:46
Дык вроде механизм смены один: gcc -V <version>.
Если ядро компилить, то Makefile править надо...
SirHenry
Кстати какую последовательность комманд, для компиляции вводите?

ruslandh
25-05-2003, 23:44
Zur0
Ну тут Вы ошибаетесь - это только часть, что надо сделать для смены версии gcc. Привиду лог скрипта select-gcc (для примера) :

Setting up automatic selection of i586-alt-linux-cpp.
Checking available versions of i586-alt-linux-cpp, updating links in /etc/altern
atives ...
(You may modify the symlinks there yourself if desired - see `man ln'.)
Updating i586-alt-linux-cpp (/usr/bin/i586-alt-linux-cpp) to point to /usr/bin/i
586-alt-linux-cpp-3.2.
Leaving cpp.1.bz2 (/usr/share/man/man1/cpp.1.bz2) pointing to /usr/share/man/man
1/cpp-3.2.1.bz2.

Setting up automatic selection of gcc.
Checking available versions of gcc, updating links in /etc/alternatives ...
(You may modify the symlinks there yourself if desired - see `man ln'.)
Updating gcc (/usr/bin/gcc) to point to /usr/bin/colorifer.
Leaving g77 (/usr/bin/g77) pointing to /usr/bin/colorifer.
Leaving gcj (/usr/bin/gcj) pointing to /usr/bin/colorifer.
Leaving g++ (/usr/bin/g++) pointing to /usr/bin/colorifer.

Setting up automatic selection of i586-alt-linux-gcc.
Checking available versions of i586-alt-linux-gcc, updating links in /etc/altern
atives ...
(You may modify the symlinks there yourself if desired - see `man ln'.)
Updating i586-alt-linux-gcc (/usr/bin/i586-alt-linux-gcc) to point to /usr/bin/i
586-alt-linux-gcc-3.2.
Leaving i586-alt-linux-gcov (/usr/bin/i586-alt-linux-gcov) pointing to /usr/bini586-alt-linux-gcov-3.2.
Leaving gcc.1.bz2 (/usr/share/man/man1/gcc.1.bz2) pointing to /usr/share/man/ma1/gcc-3.2.1.bz2.
Leaving i586-alt-linux-unprotoize (/usr/bin/i586-alt-linux-unprotoize) pointingto /usr/bin/i586-alt-linux-unprotoize-3.2.
Leaving i586-alt-linux-protoize (/usr/bin/i586-alt-linux-protoize) pointing to usr/bin/i586-alt-linux-protoize-3.2.
Leaving gcov.1.bz2 (/usr/share/man/man1/gcov.1.bz2) pointing to /usr/share/man/an1/gcov-3.2.1.bz2.

Setting up automatic selection of i586-alt-linux-g++.
Checking available versions of i586-alt-linux-g++, updating links in /etc/alteratives ...
(You may modify the symlinks there yourself if desired - see `man ln'.)
Updating i586-alt-linux-g++ (/usr/bin/i586-alt-linux-g++) to point to /usr/bin/586-alt-linux-g++-3.2.
Leaving i586-alt-linux-c++filt (/usr/bin/i586-alt-linux-c++filt) pointing to /ur/bin/i586-alt-linux-c++filt-3.2.
Leaving g++.1.bz2 (/usr/share/man/man1/g++.1.bz2) pointing to /usr/share/man/ma1/gcc-3.2.1.bz2.

Zur0
26-05-2003, 05:03
ruslandh
Ну я имел ввиду, что для ядра можно Makefile поправить и компилить с любым gcc.

SirHenry
26-05-2003, 08:17
Zur0 Ну ошибка похоже не при компиляции, а при ликовании...
А как бороться то с ней?
Не бось для версии 3.2 прочитал?
Ага, точно. Просто она по-русски писана :gigi: Про патчи пропустил, сразу за сборку взялся.
Что-то мне все больше кажется, что сначала нужно было откомпилить и поставить binutils-2.13.2.1, glibc-2.3.2, а уж потом обновлять сам gcc до v.3.3.... *Кстати, binutils не компилятся тоже - вылетают с ошибкой.
Кстати какую последовательность комманд, для компиляции вводите?
Компиляции ведра? Ну там все банально: make dep clean&&make bzImage&&make modules&&make modules_install.
.config не новый, настроенный и обкатанный....

ruslandh
Я просто не знаю как смена версии gcc организована в вашем дистрибутиве
Но ведь есть наверняка какие то рекомендации или описания общего характера, не привязанные к конкретным дистрибутивам?

Zur0
26-05-2003, 19:37
А как бороться то с ней?
Ну начнем стого, что стоит правильно устоновит gcc, а коли include подпортили то glibc + kernel-headers, судя по всему.
Если не поможет то переставить binutils (там как раз линкер и находится)

Кстати разработчики ядра советуеют его компилить c gcc-2.95.3 :gigi:

А дистрибутив это секрет? :o

SirHenry
27-05-2003, 10:24
Zur0
А дистрибутив это секрет?
Ни в коем случае! Дистрибутив - RedHat7.2

Нда... Опыт сын ошибок трудных (с) ;)


Исправлено: SirHenry, 12:12 28-05-2003

ooptimum
27-05-2003, 16:15
ruslandh
PS Интересно - а в каком "живом" дистрибутиве ядро собрано на gcc 3.x ?
SuSE 8.2

SirHenry
28-05-2003, 11:44
Zur0
Переставил RedHat7.2 (уже прсто экперимента ради :) ), обновил сразу же binutils до 2.13.2.1 и поставил gcc-3.3 (конфигурил с ключами ./configure --prefix=/usr --enable-shared --enable-threads=posix --with-system-zlib --enable-__cxa_atexit&&make bootstrap 2>&1 |tee /gcc.log. Потом решил взяться за glibc-2.3.2, но при ./configure --prefix=/usr --disable-profile --enable-add-ons --libexecdir=/usr/bin --libdir=/usr/lib
вылезает ошибка configure:1350: error: you must configure in a separate build directory... В INSTALL'e написанно, что нужно создать некую директорию для "...to put the object files in".... Как обойти это ошибку? (млин, дурацкий вопрос получился...).
И еще вопрос: после обновления glibc нужно будет пересобирать gcc *(т.к. компилятор собирался со старыми glibc) или нет?
ЗЫЖ а при make bzImage все таже ошибка вылезает. Попробовал еще пересобирать xmms, util-linux-2.11z, mc - никаких проблем.... Странно все это :)

Zur0 & ruslandh
спасибо за советы :oszone:

Исправлено: SirHenry, 12:58 28-05-2003




© OSzone.net 2001-2012