Как указать, какой из двух модулей ядра компилировать с помощью Makefile? - PullRequest
1 голос
/ 06 мая 2020

У меня есть Makefile, который компилирует два модуля ядра Linux (mod1.c и mod2.c).

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

# build the modules
default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules

#cleanup
clean:
    rm -rf *.ko *.o *.mod* .*.cmd modules.order Module.symvers .tmp_versions

Это отлично работает для сборки обоих модулей ядра при запуске make, но Я хотел бы иметь возможность указать, какой модуль нужно создать. Например, make mod1 для компиляции mod1.c и make mod2 для компиляции mod2.c.

Я не уверен, как обрабатывать obj-m. В противном случае, указание, какую программу компилировать , хорошо описано в Интернете .

1 Ответ

1 голос
/ 06 мая 2020

Ядро использует переменные для включения / выключения модулей ядра:

CROSS_COMPILE ?= /path/to/compiler/arm-linux-gnueabihf-
T1      ?= n
T2      ?= n

obj-$(T1) += test1.o
obj-$(T2) += test2.o
LINUX_SOURCE_DIR=/path/to/linux


all:
        $(MAKE) -C $(LINUX_SOURCE_DIR) M=$(PWD) modules ARCH=arm

test1:
        $(MAKE) T1=m

test2:
        $(MAKE) T2=m

clean:
        rm *o modules.order Module.symvers *mod.c

Вы можете использовать это как make T1=m или make test2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...