URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5317
[ Назад ]

Исходное сообщение
"Проблема с компиляцией модуля. Помогите плиз."

Отправлено Zlodei , 06-Апр-06 12:37 
Я первый раз с этим сталкиваюсь. Просто возникла необходимость написания драйвера для диплома.

Когда я пробую собрать модулю по примерам то че то у меня не получается!
Пожайлуста направте на путь истинный.
___________________________
Файл mydrv.c

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

MODULE_LICENSE("GPL");

static int __init my_init(void)
{
printk("<1>Da\n");
return 0;
};

static void __exit my_cleanup(void)
{
printk("<1>Net\n");
return;
};

module_init(my_init);
module_exit(my_cleanup);

Файл makefile
obj-m += mydrv.c

Команда для компиляции:
make -C /lib/modules/`uname -r` SUBDIRS=$PWD makefile

После чего не выдается ни каких ошибок и сообщений вообще. И получается какбудто команда выполнена. Хотя объектного файла mydrv.o я не нахожу ни где.

makefile и mydrv.c расположены в одной папке /home/Nikolai. Компилирую тоже из этой папки.
ОС ASP Linux 2.6.9-1.667
_________________________________
Заранее благодарен!!!


Содержание

Сообщения в этом обсуждении
"Проблема с компиляцией модуля. Помогите плиз."
Отправлено 111 , 06-Апр-06 13:36 
>Я первый раз с этим сталкиваюсь. Просто возникла необходимость написания драйвера для
>диплома.
>
>Когда я пробую собрать модулю по примерам то че то у меня
>не получается!
>Пожайлуста направте на путь истинный.
>___________________________
>Файл mydrv.c
>
>#include <linux/module.h>
>#include <linux/init.h>
>
>MODULE_LICENSE("GPL");
>
>static int __init my_init(void)
>{
>printk("<1>Da\n");
>return 0;
>};
>
>static void __exit my_cleanup(void)
>{
>printk("<1>Net\n");
>return;
>};
>
>module_init(my_init);
>module_exit(my_cleanup);
>
>Файл makefile
>obj-m += mydrv.c
>
>Команда для компиляции:
>make -C /lib/modules/`uname -r` SUBDIRS=$PWD makefile
>
>После чего не выдается ни каких ошибок и сообщений вообще. И получается
>какбудто команда выполнена. Хотя объектного файла mydrv.o я не нахожу ни
>где.
>
>makefile и mydrv.c расположены в одной папке /home/Nikolai. Компилирую тоже из этой
>папки.
>ОС ASP Linux 2.6.9-1.667
>_________________________________
>Заранее благодарен!!!

а через find искать не пробовали


"Проблема с компиляцией модуля. Помогите плиз."
Отправлено Zlodei , 06-Апр-06 14:27 
Пробовал. Не помогает. :(

"Проблема с компиляцией модуля. Помогите плиз."
Отправлено vvvua , 06-Апр-06 14:36 
-C /lib/modules/`uname -r`

А makefile разве в этой директории?
Что-то с путями нахамутал.
Попробуй все пути абсолютными задать.


"Проблема с компиляцией модуля. Помогите плиз."
Отправлено vvvua , 06-Апр-06 14:48 
Вот еще примерчик пригодится:
http://www.captain.at/programming/rtai/serportint.php


"Проблема с компиляцией модуля. Помогите плиз."
Отправлено Zlodei , 06-Апр-06 15:27 
>Вот еще примерчик пригодится:
>http://www.captain.at/programming/rtai/serportint.php

Огромное спасибо за примерчик. Немного сдвинулось. Изменил makefile на:
obj-m := mydrv.c

KDIR := /lib/modules/$(shell uname -r)/build
PWD := $#(shell pwd)

default:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

Командная строка (из директории с makefile):
make -f makefile

Теперь выдает следующее:
[root@localhost Nikolai]# make -f makefile
make -C /lib/modules/2.6.9-1.667asp/build SUBDIRS= modules
make[1]: Entering directory `/lib/modules/2.6.9-1.667asp/build'
  CHK     include/linux/version.h
  SPLIT   include/linux/autoconf.h -> include/config/*
  CHK     include/asm-i386/asm_offsets.h
  HOSTCC  scripts/genksyms/genksyms.o
  HOSTCC  scripts/genksyms/lex.o
  HOSTCC  scripts/genksyms/parse.o
  HOSTLD  scripts/genksyms/genksyms
  CC      scripts/mod/empty.o
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTLD  scripts/mod/modpost
make[2]: *** Нет правила для сборки цели `arch/i386/kernel/msr.c', требуемой для `arch/i386/kernel/msr.o'.  Останов.
make[1]: *** [arch/i386/kernel] Ошибка 2
make[1]: Leaving directory `/lib/modules/2.6.9-1.667asp/build'
make: *** [default] Ошибка 2
_____________
В чем проблема?


"Проблема с компиляцией модуля. Помогите плиз."
Отправлено Renat , 07-Апр-06 10:33 
>KDIR := /lib/modules/$(shell uname -r)/build

Build должен быть ссылкой на директорию исходников ядра, причем
ядро должно быть скомпилировано.


"Проблема с компиляцией модуля. Помогите плиз."
Отправлено Zlodei , 11-Апр-06 11:49 
После компиляции модуля образовался файл mydrv.ko
Но при его инсталяции появляется ошибка:

[root@localhost Nikolai]# insmod ./mydrv.ko
insmod: error inserting './mydrv.ko': -1 Invalid module format

Что это значит?