LINUXPORTAL.RU  |   Живое общение LinuxPortal.Ru   |    Ленты событий        |   ФОРУМЫ  |   БИБЛИОТЕКА  |   ССЫЛКИ  |   НОВОСТИ  |   БЛОГИ АДМИНОВ

Участники   Поиск   F.A.Q.    Регистрация    Вход   Начало
Начало » Для администраторов и программистов » Локальные системы / Клиентские программы » обновление ядра
Показать: Сегодняшние сообщения  :: Показать голосования :: Навигатор по сообщениям
Отправить по e-mail 
Переключение в режим просмотра в виде древовидного списка сообщений и ответов Создать новую тему Отправить ответ
обновление ядра Вск, 10 Январь 2010 20:21 Переход к следующему сообщения
kostik в настоящее время не в онлайне kostik  UKRAINE
Сообщений: 16
Зарегистрирован: Август 2006
Географическое положение: Украина
Частый Гость
Здравствуйте!
На моем компьютере установлена Mandriva'2007 kernel 2.6.17. Решил обновить ядро до 2.6.32. Скачал архив ядра с ftp.kernel.org, разархивировал, установил требуемые в Documentation/Changes пакеты нужных версий, сконфигурировал при помощи make xconfig и т.д. после чего запустил make bzImage. После вывода десятка строчек я увидел такое:
include/linux/compiler-gcc4.h:8:4: error: #error Your version of gcc miscopiles the __weak directive
make[1]: *** [kernel/bounds.s] Ошибка 1
make: *** [prepare0] Ошибка 2
Как это понимать и что с этим делать не знаю (новое ядро требует gcc версии 3.2, а у меня стоит 4.1.1, так что все вроде бы нормально). Подскажите, пожалуйста, что делать.
Re: обновление ядра Вск, 10 Январь 2010 23:34 Переход к предыдущему сообщенияПереход к следующему сообщения
San АНДРЕЕВ в настоящее время не в онлайне San АНДРЕЕВ  RUSSIAN FEDERATION
Сообщений: 8446
Зарегистрирован: Июнь 2002
Географическое положение: Санкт-Петербу...

administrator · partner

А gcc по умолчанию новой версии используется или оставшейся в системе старой? Что выводит "gcc -v" (без кавычек) от имени "обычного" пользователя?
Re: обновление ядра Вск, 10 Январь 2010 23:37 Переход к предыдущему сообщенияПереход к следующему сообщения
San АНДРЕЕВ в настоящее время не в онлайне San АНДРЕЕВ  RUSSIAN FEDERATION
Сообщений: 8446
Зарегистрирован: Июнь 2002
Географическое положение: Санкт-Петербу...

administrator · partner

Виноват, проблема похоже в ошибках компилятора (http://lkml.org/lkml/2009/1/2/211):

Цитата:

> > + * GCC 4.1.0 and 4.1.1 has a bug that can miscompile __weak symbols,
> > + * by inlining __weak functions into same-file call sites - breaking the
> > + * kernel if the __weak symbol is overriden later on.
> > + *
> > + * We have not found a clean way to work around this bug on the source
> > + * code level, so we do not allow these compilers (which are quite
> > + * rare these days, have other bugs and are superceded by the 4.1.2
> > + * bugfix release anyway)


Т.е. собирать надо как минимум версией 4.1.2.

[Обновления: Вск, 10 Январь 2010 23:37]

Re: обновление ядра Пнд, 11 Январь 2010 18:30 Переход к предыдущему сообщенияПереход к следующему сообщения
kostik в настоящее время не в онлайне kostik  UKRAINE
Сообщений: 16
Зарегистрирован: Август 2006
Географическое положение: Украина
Частый Гость
Спасибо за версию! Только вот незадача: а как обновить gcc? Скачал tar.gz-архив gcc-4.1.2, распаковал его, запустил configure, затем скомпилировал (make от пользователя), а затем установил (make install от root). Все прошло без сучка-без задоринки. Но! если вести
gcc --version
все равно отвечает 4.1.1 (по-старому). Попробовал удалить старый пакет (через штатную gui-утилиту), но в результате непоправимо искалечил систему (пришлось переставлять). Наставьте на путь истинный: как правильно обновить пакет?
Re: обновление ядра Пнд, 11 Январь 2010 19:28 Переход к предыдущему сообщенияПереход к следующему сообщения
San АНДРЕЕВ в настоящее время не в онлайне San АНДРЕЕВ  RUSSIAN FEDERATION
Сообщений: 8446
Зарегистрирован: Июнь 2002
Географическое положение: Санкт-Петербу...

administrator · partner

Можно поправить значение переменной PATH и прописать путь до новой версии gcc первым. Можно написать spec для сборки своего rpm-пакета из исходников и потом им обновить дистрибутивный пакет.
Re: обновление ядра Пнд, 11 Январь 2010 23:17 Переход к предыдущему сообщенияПереход к следующему сообщения
kostik в настоящее время не в онлайне kostik  UKRAINE
Сообщений: 16
Зарегистрирован: Август 2006
Географическое положение: Украина
Частый Гость
И снова тупик...
1) попытаться изменить PATH. После компиляции и установки gcc-4.1.2 из исходников я с удивлением не обнаружил нигде исполняемого файла с подходящим именем. Файл gcc-4.1.1 как лежал в /usr/bin так и лежит. Так что исправлять ссылку не на что. Компиляция и установка выводят тонны сообщений, разобраться в которых для меня нереально. Единственное что, сообщений об ошибках не видно;
2) попытался установить gcc из rpm-пакета. С трудом нашел TWWgcc402-4.0.2-2.i386.rpm. Но он при установке пожаловался на отсутствие TWWlibmprf22. Поиск по google неутешителен - всего три ссылки на сообщения об ошибка (типа bugzilla).
Я в шоке :-(((
P.S. Кстати, никогда не думал, что rpm-пакет для gcc это такая проблема
Re: обновление ядра Втр, 12 Январь 2010 00:57 Переход к предыдущему сообщенияПереход к следующему сообщения
San АНДРЕЕВ в настоящее время не в онлайне San АНДРЕЕВ  RUSSIAN FEDERATION
Сообщений: 8446
Зарегистрирован: Июнь 2002
Географическое положение: Санкт-Петербу...

administrator · partner

4.0.2 вроде как не то же самое, что 4.1.2 - смысл его искать? Пакет нужно собирать самому, вряд ли вы найдёте готовый для своей системы нужной версии. Облегчить себе создание пакета можно при помощи утилиты checkinstall (стоит ознакомиться с её документацией).

Про PATH сказать что-либо сложно, нужно всё таки знать что выводится при make install.

Ещё несложный вариант - при возможности обновите дистрибутив.
Re: обновление ядра Сбт, 16 Январь 2010 00:54 Переход к предыдущему сообщения
kostik в настоящее время не в онлайне kostik  UKRAINE
Сообщений: 16
Зарегистрирован: Август 2006
Географическое положение: Украина
Частый Гость
Если кому интересно, то я понял в чем моя ошибка - при удалении пакета gcc-4.1.1 я сдуру удалил также и пакет glibc и, конечно, система померла. Теперь я сделал так (после установки системы по-новой): скомпилировал и установил gcc-4.1.2, удалил пакет gcc-4.1.1 через стандартную gui-утилиту Mandriv'ы. После этого gcc --version стала выдавать 4.2.1 и ядро скомпилировалось без запинки.
  Переключение в режим просмотра в виде древовидного списка сообщений и ответов Создать новую тему Отправить ответ
Предыдущая тема:использование библиотек в модуле ядра
Следующая тема:конвеер в командной строке
Переход к форуму:
  

-=] Вернуться вверх [=-
[ Сформировать XML ] [ RSS ]

Текущее время: Сбт Июл 31 17:46:46 MSD 2010
.:: Обратная связь :: Начало ::.

При поддержке: FUDforum 3.0.0.
Copyright © 2001-2009 FUDforum Bulletin Board Software

©"Linuxportal.Ru". Материалы сайта можно использовать свободно при условии сохранения этой свободы при дальнейшем распространении, если явно не указано иное.

Дизайн и программирование: ,
Поставьте нашу кнопку: Linux Portal.ru ::: Линукс Портал.ру