Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Компиляция Linux

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
alex_t
Гость





СообщениеДобавлено: Ср Май 21 2003 15:16    Заголовок сообщения: Компиляция Linux Ответить с цитатой

Народ пдскажите пжалуйста, что нужно сделать чтобы корретктно откомпилировать и запустить модуль ядра под Linux (Mandrake 9.1).

Небольшой пример кода модуля из какой то книги я написал, даже откомпилировал без ошибок (книжный вариант все же был не без...), но вот попытка загрузить модуль приводит к тому, что выдается сообщение типа немогу загрузить модуль потому как не известна версия ядра под которой этот самый модуль компилировался.

В доке по компиляции модулей написана какая то хренотень аж более 1000 байт. Может нужон какой нибудб include.

Буду признателен ссылочке на код рабочего модуля ядра Linux, желательно с makefile.
Вернуться к началу
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Ср Май 21 2003 15:54    Заголовок сообщения: Re: Компиляция Linux Ответить с цитатой

Если ядро скомпилено с опципей "включить версию", то модуль, написанный для другого ядра ты фиг подсунешь.

Еще глюк. Ядро и модули нужно компилировать одинаковым компилятором. Иначе тоже фиг чего загрузится.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
alex_t
Гость





СообщениеДобавлено: Ср Май 21 2003 20:32    Заголовок сообщения: Re: Компиляция Linux Ответить с цитатой

Типа понял. Спасибо, друг.

Тогда еще вопросы.
Как сказать написанному модулю, что ты коипилируешься пот такую то версию ядра (в include version.h есть макрос для генерации верссии, но макрос содержит какие то параметры, какие значения в них следует подставлять)?
Можно ли как то узнать каким компилятором собиралось ядро, потому как по примеру из книги я использовал gcc (возможно лучше использовать cc)?

Ето пока все...

Буду продолжать копать код и доку дальше.
Вернуться к началу
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Чт Май 22 2003 10:32    Заголовок сообщения: Re: Компиляция Linux Ответить с цитатой

Я всегда делал так:
Брал ядро с www.kernel.org или ставил исходники ядра, которые шли с дистрибутивом.

Компил ядро, ставил, а потом компили модули для нужного железа. В частности для старых плат Digi Board.

Версию компилятора узнать просто.
strings /boot/vmlinuz | grep gcc

Либо uname -a
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
alex_t
Гость





СообщениеДобавлено: Чт Май 22 2003 13:24    Заголовок сообщения: Re: Компиляция Linux Ответить с цитатой

Спасибо за совет

Где можно поподробнее узнать (желательно на руском) о компиляции ядра (добавлении, удалении статических драйверов) и компиляции модулей.

Вероятно у меня не полные исходники ядра или я не правильно компилирую модуль (делаю я это по образу freeBSD), т.е. делаю makefile и команду make вроде компилиться без ошибок и создается объектный файлн "name.o", далее выпоняю команду "insmod ./name.o" и кердык.

Но в этом файле нет никакой информации о версии ядра (я посмотрел бинарники других модулей, почемуто с расширением "*.o.gz", и в них есть строка типа "kernel version 2.2..").
Вернуться к началу
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Пт Май 23 2003 08:59    Заголовок сообщения: Лучше скажи что у тебя за железка. Наверняка драйверы в 2.4.Х есть (-) Ответить с цитатой

-
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
alex_t
Гость





СообщениеДобавлено: Пт Май 23 2003 09:57    Заголовок сообщения: Re: Лучше скажи что у тебя за железка. Наверняка драйверы в 2.4.Х есть (-) Ответить с цитатой

Железяки собственно реальной у меня нет. Просто нужно написать библиотеку функций которая бы позволила общаться драйверам с устройствами, висящим на нестандартной PC шине (драйвера под нее есть, но не в виде модуля и задача немного не та). Работа с шиной в библиотеке идет как с обычным PCI устройством. И кроме библиетеки нужно написать тестовый драйвер в виде модуля, использующий эту библиотеку. Для начала я бы хотел просто скомпилить и удачно загрузить какой нибудь простенький ядреный модуль, необезательно для реального девайса.

Компиляция, как я уже говорил, идет нормально (без ошибок), а вот при загрузке выскакивает сообщения что не могу найти версию ядра. Может я как то неправильно компилирую модуль или нехватает каких то системных библиотек (настроек) для работы с модулями, или что то еще?

Да и еще при компиляции у меня возникают ошибки типа немогу найти такой то файл или содержимое этого файла явно не C-код. Причем таково рода файлы в родных include определяются как "/usr/include/linux/", а если руками переписать пути на "/usr/src/linux/include/linux", то все работает (компилиться). Может надо какие то переменные (path) для gcc настроить на нужные каталоги?

Уф, все!
Вернуться к началу
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Пт Май 23 2003 10:33    Заголовок сообщения: Да не обязательно (+) Ответить с цитатой

Достаточно в /usr/include сделать символьчискую ссылку с именем linux, а у казывать она будет сам догадася куда. Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...