информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Spanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
модуль ядра Линукса 18.12.03 22:27  
Автор: руд Статус: Незарегистрированный пользователь
<"чистая" ссылка>

Я собрал второй пример из книги Померанца
$gcc -DMODULE -D__KERNEL__ -DLINUX -O2 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -isystem /lib/modules/`uname -r`/build/include -c h1.c

#insmod h1.o
h1.o: unresolved symbol module_unregister_chrdev
h1.o: unresolved symbol module_register_chrdev
h1.o:
Hint: You are trying to load a module without a GPL compatible license
and it has unresolved symbols. Contact the module supplier for
assistance, only they can help you.

Почему у меня такая ошибка ?

ЗЫ: Порекомендуйте какие-нибудь ресурсы (рус,англ) по данной тематике.
ЗЗЫ: Ось у меня мандрейк 9
Версии модулей? 19.12.03 15:02  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
В make menuconfig в одном из первых меню лежит

> h1.o: unresolved symbol module_unregister_chrdev
> h1.o: unresolved symbol module_register_chrdev

> Почему у меня такая ошибка ?
Выражается в том, что такие вот имена манглятся: в конец добавляется разный мусор. Причем мусор разный для разных версий ядра. Это приводит к тому, что динамический линкер просто не может связать модули из разных версий ядер.

Для начала попробуй включить эту опцию. Лучше всего после этого пересобрать ядро и тестировать новые модули в нем, чтобы быть уверенным, что и исходники и конфигурация те что надо.

> ЗЫ: Порекомендуйте какие-нибудь ресурсы (рус,англ) по
> данной тематике.
> ЗЗЫ: Ось у меня мандрейк 9
Всем спасибо. 20.12.03 14:52  
Автор: руд Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Всем спасибо.
Заменил module_register_chrdev на register_chrdev - заработало (модуль загрузился).

2 amirul - я недоконца понял твою идею в части
/*
В make menuconfig в одном из первых меню лежит
Выражается в том, что такие вот имена манглятся: в конец добавляется разный мусор. Причем мусор разный для разных версий ядра. Это приводит к тому, что динамический линкер просто не может связать модули из разных версий ядер.
Для начала попробуй включить эту опцию.
*/

Ты об этом говоришь ?
h1.c:38: warning: implicit declaration of function `printk_R1b7d4074'
h1.c:41: warning: implicit declaration of function `sprintf_R1d26aa98'

Ты не мог бы переформулирофать/пояснить свою мысль.

ЗЫ: А типа DDK в Линуксе что ?
Попробую 21.12.03 17:01  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Всем спасибо.
> Заменил module_register_chrdev на register_chrdev -
> заработало (модуль загрузился).
Тогда точно не из за версий модулей.

> 2 amirul - я недоконца понял твою идею в части
> /*
> В make menuconfig в одном из первых меню лежит
При конфигурировании ядра в самом начале идут вопросы о поддержке модулей. Так вот кроме собственно поддержки там есть еще и Module Versioning (кажется так) который и приводит к этому эффекту

> Ты об этом говоришь ?
> h1.c:38: warning: implicit declaration of function
> `printk_R1b7d4074'
> h1.c:41: warning: implicit declaration of function
> `sprintf_R1d26aa98'
Ага. В тексте программы это обычные printk/sprintf, но они подключают файл modversion.h (тоже кажется так - пишу по памяти) в котором определяются макросы препроцессора, которые и производят такую замену. Идея в том, что в разных ядрах мусор, идущий после "_R" разные. И поэтому даже если ядро одной версии экспортирует printk, а ядро другой версии импортирует ее же, то в бинарный файл printk попадет под разными именами и следовательно модули от разных версий не свяжутся

> Ты не мог бы переформулирофать/пояснить свою мысль.
Надеюсь понятно выразился. Но так как проблема решилась совершенно другим способом, то скорее всего дело было не в ней. Но довольно большая вероятность, что в том, что установленное ядро отличалось от ядра сконфигурированного там, где указал ZaDNiCa

> ЗЫ: А типа DDK в Линуксе что ?
А ничего. Для разработки модулей ядра нужно поставить исходники ядра и читать документацию.
ты точно уверен что каталоге /lib/modules/`uname... 19.12.03 12:03  
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
<"чистая" ссылка>
ты точно уверен что каталоге /lib/modules/`uname -r`/build/include
лежат сырцы от того ядра на котором ты сейчас работаешь?
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach