Модули, состоящие из нескольких файлов
Иногда возникает необходимость разместить исходные тексты модуля в нескольких файлах. В этом случае kbuild опять возьмет на себя всю "грязную" работу, а Makefile поможет сохранить наши руки чистыми, а голову светлой! Ниже приводится пример модуля, состоящего из двух файлов:
Пример 2-8. start.c
/* * start.c - Пример модуля, исходный * текст которого размещен в нескольких файлах */
#include <linux/kernel.h> /* Все-таки мы пишем код ядра! */ #include <linux/module.h> /* Необходим для любого модуля ядра */
int init_module(void) { printk("Hello, world - this is the kernel speaking\n"); return 0; }
Пример 2-9. stop.c
/* * stop.c - Пример модуля, исходный текст * которого размещен в нескольких файлах */
#include <linux/kernel.h> /* Все-таки мы пишем код ядра! */ #include <linux/module.h> /* Необходим для любого модуля ядра */
void cleanup_module() { printk("<1>Short is the life of a kernel module\n"); }
Пример 2-10. Makefile для сборки всех модулей
obj-m += hello-1.o obj-m += hello-2.o obj-m += hello-3.o obj-m += hello-4.o obj-m += hello-5.o obj-m += startstop.o startstop-objs := start.o stop.o