LINUX.ORG.RU

Как компилировать модули ядра?


0

0

Привет всем!

Можно как-нибудь скомрилировать отдельно свой модуль ядра (ASP 9), а не вместе с ядром (что бы его можно было вставить с помощью insmod). Я пишу простейший пример, только функции init_module() и cleanup_module(), которые просто выводят по строке текста через printk(). Компилирую с опциями -Wall -D__KERNEL__ -DMODULE -DLINUX получаю какие-то ошибки типа parse error...

Как вообще правильно компилировать свои драйвера? Заранее благодарен.

P.S. простите, если вопросы тривиальные, никак не могу найти нормальную документацию.

anonymous

А что конкретно за ошибки то? Код показать можешь?

parse error - это скорее всего не поставил (или поставил лишнюю) точку с запятой или использовал необъявленную константу.

Murr ★★
()

В частности не забыл ли сделать #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h>

Murr ★★
()

Собственно, не компилируется уже следующий текст:

#include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/proc_fs.h>

Ошибки в последнем инклюднике.

А без него ворнинги о несоответствии версий я дра и попытках использовать системные инклюдники в пользовательских приложениях (будто это не ядро).

anonymous
()

[root@mobile100 robots]# cat ee.c
#define MODULE
#include <linux/module.h>

MODULE_LICENSE("GPL");

int init_module(void) {printk("<1>Hello, world\n"); return 0;}
void cleanup_module(void) {printk("<1>Goodbue cruel world\n");}
[root@mobile100 robots]# gcc -c -I /usr/src/linux-2.4.20-18.9asp/include
ee.c
[root@mobile100 robots]# insmod ee.o
Hello, world
[root@mobile100 robots]# lsmod | grep ee
ee 748 0 (unused)
[root@mobile100 robots]# rmmod ee
Goodbue cruel world
[root@mobile100 robots]#

ссылки по теме:

http://www.xml.com/ldd/chapter/book/

http://www.programme.ru/archive/2001/8/082001_1.phtml

http://genphys.phys.msu.ru/~dmitriy/site/mv/driver.html

сайт www.programme.ru содержал статью про дрова(верхняя ссылка - сосканированное продолжение), а ща чето он недостепен, но может поднимется... если не поднимется, то напиши, пойду в библиотеку сканировать журнал...

vilfred ☆☆
()

[root@murr root]# cat ttmod.c
#define __KERNEL__
#define MODULE
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/proc_fs.h>

int myinit () {
}

void myexit () {
}

module_init (myinit);
module_exit (myexit);
[root@murr root]# gcc -c ttmod.c -I/lib/modules/`uname -r`/build/include
[root@murr root]#

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.