LINUX.ORG.RU

Проблема со сборкой модуля


0

0

Всем доброго времени суток. Пишу модуль для ядра (занимаюсь этим впервые), возникла проблема. Прошу помочь кто знает. Итак есть исходник:

// foo.c #define CONFIG_NR_CPUS 1

#define __KERNEL__ #define MODULE

//#include "foo2.h"

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

int oc_kernelmod_init_module(void)

{

printk( KERN_DEBUG "Module OC_KernelMod init\n" );

//foo2f();

return 0;

}

void oc_kernelmod_exit_module(void)

{

printk( KERN_DEBUG "Module OC_KernelMod exit\n" );

}

module_init(oc_kernelmod_init_module); module_exit(oc_kernelmod_exit_module);

-------------------------------------------------------

#Makefile

obj-m := foo.o #foo-objs := foo2.o

------------------------------------

собираю так: make -C /lib/modules/`uname -r`/build SUBDIRS=$PWD M=`pwd` modules

загружаю его,выгружаю - все работает (в логе 2 сообщения, все как положено)

теперь добавляем пару файлов:

// foo2.h

void foo2f(void);

----------------------------------

// foo2.c

#include "foo2.h"

#include <linux/kernel.h>

void foo2f(void)

{

printk(KERN_ALERT "Foo2 function\n");

}

------------------------------------------

раскоментариваю

//#include "foo2.h"

и

//foo2f();

в foo.c

раскоментариваю вторую строку их Makefile: #Makefile obj-m := foo.o foo-objs := foo2.o

собираю (без ошибок), загружаю, lsmod | grepp foo (все отлично, модуль в списке есть), выгружаю.... а лог пуст (всмысле ничего нового, а должно было быть 3 новых сообщения) не пойму, или сообщения не пишутся или функции не вызываются или хз.

уважаемые, подскажите что я сделал не так пожалуйста. ну не писАть же мне модуль одним файлом... почему при сборке модуля из нескольких обьектных файлов получается такая нериятность?

Ответившим огромное спасибо!

anonymous

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

anonymous
()

>#Makefile
>
>obj-m := foo.o
>foo-objs := foo2.o

если модуль состоит из file1.c и file2.c надо оба указать в foo-objs,
правильно было бы написать как-нибудь так:

obj-m := foo_module.o
foo_module-objs := foo.o foo2.o

fghj ★★★★★
()
Ответ на: комментарий от fghj

Попробовал, работает. Спасибо!

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