2015-05-03 4 views
1

Я пытаюсь скомпилировать мой модуль ядра. . Имя файла .c: file1.c, но мне нужно, чтобы имя файла .ko было mod1.ko.Имя файла makefile модуля ядра

Как я могу это сделать?

Мой текущий Makefile:

obj-m := mod1.o 
KDIR :=/lib/modules/$(shell uname -r)/build 
PDW := $(shell pwd) 

all: 
    $(MAKE) -C $(KDIR) M=$(PDW) modules 

clean: 
    $(MAKE) -C $(KDIR) M=$(PDW) clean 
+0

ли вы пытались переименовать file1.c в mod1.c? – mpromonet

ответ

0

Решение выглядит следующим образом:

obj-m += mod1.o 
mod1-objs := file1.o 

KBUILD_CPPFLAGS += -I$(PWD)/ 

all: 
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

clean: 
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 
+1

Я думаю, вы должны изменить 'fw-objs' на' mod1-objs', чтобы это действительно работало. –

+0

@ KrzysztofAdamski Исправлено. Благодаря! –

3

Вы должны изменить первую строку что-то вроде этого:

obj-m += module_name.o 
module_name-y := file1.o 

Где module_name это имя файла модуля (в этом примере, выход будет module_name.ko) и он будет построен от file1.c. Вы можете добавить больше чем один исходный файл на 2-й линии, так что это может быть:

module_name-y := file1.o file2.o file3.o 

В этом случае module_name.ko будет строить из file1.c, file2.c и file3.c.

Вы должны прочитать this document, если хотите полностью понять Linux-файлы make kernel. Ваша проблема описана где-то вокруг линии 190.

Смежные вопросы