![]() |
Приветствую, All!
--- Как бы сабж провернуть? Попутно, еще несколько вопросов: Какие еще либы/программы нужно будет обновлять перед/после сабж(а)? Каковы возможные последствия "кривой" установки gcc? Есть ли дока (желательно на русском), *описывающая по шагам процесс обновления уже установленного компилятора? --- Вроде все вопросы пока :-) [s]Исправлено: SirHenry, 16:18 20-05-2003[/s] |
Цитата:
Последствий почти никаих. Возмеш да с рпм'ки переставиш. А инструкция step-by-step -- LFSBook :gigi: Постараешся и на русском найдеш |
2 Zur0
Цитата:
|
glibc-2.3.2 сейчас последняя еси не ошибаюсь.
Цитата:
|
SirHenry
Я думаю при установке нового gcc Вы это быстро выясните :) |
ruslandh
Цитата:
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 вроде) оно собиралось весело и задорно... В чем проблема может заключаться? |
Цитата:
|
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 ...) |
Цитата:
А gcc-2.96 имеет опции оптимизации под конкретный процессор? [s]Исправлено: ruslandh, 8:09 23-05-2003[/s] |
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 Цитата:
ruslandh Цитата:
|
Ну ошибка похоже не при компиляции, а при ликовании...
Цитата:
который проверяет какие системные библиотеки пора обновить. Проблема в том, что эти хедыры, могут быть не совместимы с версий glibc, которая установлена на компе, а результат тому -- глюки. :gigi: Цитата:
|
SirHenry
Я просто не знаю как смена версии gcc организована в вашем дистрибутиве :( |
Дык вроде механизм смены один: gcc -V <version>.
Если ядро компилить, то Makefile править надо... SirHenry Кстати какую последовательность комманд, для компиляции вводите? |
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. |
ruslandh
Ну я имел ввиду, что для ядра можно Makefile поправить и компилить с любым gcc. |
Zur0
Цитата:
Цитата:
Что-то мне все больше кажется, что сначала нужно было откомпилить и поставить binutils-2.13.2.1, glibc-2.3.2, а уж потом обновлять сам gcc до v.3.3.... *Кстати, binutils не компилятся тоже - вылетают с ошибкой. Цитата:
.config не новый, настроенный и обкатанный.... ruslandh Цитата:
|
Цитата:
Если не поможет то переставить binutils (там как раз линкер и находится) Кстати разработчики ядра советуеют его компилить c gcc-2.95.3 :gigi: А дистрибутив это секрет? :o |
Zur0
Цитата:
Нда... Опыт сын ошибок трудных (с) ;) [s]Исправлено: SirHenry, 12:12 28-05-2003[/s] |
ruslandh
Цитата:
|
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: [s]Исправлено: SirHenry, 12:58 28-05-2003[/s] |
SirHenry
glibc советуют собирать так: 1. Извлекаем исходники (например в /usr/src) 3. Извлекаем add-on (glibc-linuxthreads-2.3.2.bz2) в glibc-2.3.2/ 2. Создаем катаог glibc-build и заходим в него 3. из этого каталока запускаем configure и make Код:
Попробуй взять исходники посвежее (2.4.21-rc3 например), или заюзать из дистрибутива (или наоборот с kernel.org) |
SirHenry
1 Похоже, надо строить в какой-то отдельной директории, а результаты (объектные файлы) должны создаваться в другой дтректории (не системной)(возможно для того, что-бы они не путались с одноименными системными файлами ? ) 2 А не легче сорец создать ? - Написать (или взять откуда-нибудь) файл с расширением .spec и забацать свой сорец и бинарник ? |
Zur0
Цитата:
<..откушено..> tools/build -b bbootsect bsetup compressed/bvmlinux.out CURRENT > bzImage Root device is (3, 3) Boot sector 512 bytes. Setup is 4781 bytes. System is 1130 kB warning: kernel is too big for standalone boot from floppy make[1]: Выход из каталог`/usr/src/linux-2.4.20/arch/i386/boot все собралось как из пушки. Вроде даже без error'ов :) ruslandh Цитата:
Теперь осталось только попробовать glibc обновить и посмотреть, что из этого выйдет. Надеюсь, что систему после этого эксперимента переставлять не придется :) ЗЫЖ Еще пара вопросов: 1. после обновления glibc нужно будет пересобирать gcc или можно забыть про это? 2. какие программы из жизненно необходимых могут потребовать пересборки после обновления glibc? [s]Исправлено: SirHenry, 14:04 29-05-2003[/s] |
После установки glibc надо обновлять базовый набор всех программ, они же все завязаны на glibc. Особенно при смене порядка версии. Читай опять же LFS. Думаешь зря они компилят проги типа ls и т.д. сначало статически а потом привязывая к glibc?
Просто у меня к примеру когда я в свое время (был знаком с линуксом очень мало и обновлял все что мог считая все старым и вытягивая самое свежее из инета ) захотел поставить glibc и облом после установки, ни одна программа не запустилась требуя библиотеки старого glibc, вот это тогда я потом врубился )), запускался один ldconfig. Это как круговой цикл, ставь glibc в отдельный каталог, компилируй проги с указанием на него и т.д. Добавлено: к примеру RedHat ведь не выпускает rpm пакеты нового glibc для старых дистров. Так ведь? Следствие .. узнаешь сам после установки :)) Добавлено: а gcc пофигу какой glibc, главное чтобы он был. У меня тоже стоит 3.3 и тоже когда пытался скомпилить ядро версии rc2 то вываливалась аналогичная ошибка, но разбираться с ней не стал... так как необходимость нового ядра была лишь теоретическая, хотел проверить работу acpi новой платы. Хм... быстро же работают уже rc6 лежит, даже незаметил предыдущих версий, ;) наверняка из за ошибок с компиляцией, точно в июле и новый stable выйдет!! |
2 ruslandh Zur0 SandySandy
Большое спасибо за советы - все вродь как получилось :) |
glibc-2.3.x и glibc-2.2.х друг с другом не совместимы... По крайней мере при установке gcc из пакета, требуется сначала обновить glibc, а после установки пересобрать ещё пол дистра уже новым gcc (относится к qt-приложениям).
|
Время: 19:42. |
Время: 19:42.
© OSzone.net 2001-