对于内核模块makefile:使用makefile的另一个名称并使用命令行参数

时间:2017-08-17 05:25:07

标签: makefile linux-kernel

我有内核模块源(用于arm),我想从同一个源编译两个不同的驱动程序。

使用2个源文件和交叉编译编译内核。

MODULE_MAME = modulename

SRCS = drv/source.c lib/libsrc.c

OBJS =  $(SRCS:.c=.o)

obj-m += $(MODULE_MAME).o
$(MODULE_MAME)-y = $(OBJS)

KDIR  := /mykermelsources/
PWD   := $(shell pwd)

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

在一个命令中,我想编译2个模块。

两个选择:

  • 保留3个不同的Makefile,一个将调用其他makefile的main。这有一个问题,我不能让它起作用。 make -f makefilediffmake --makefile=makefilediff给我一个错误。

日志:

make -C /mykermelsources/  ARCH=arm M=/home/mychardriver/ modules
make[1]: Entering directory '/mykermelsources'
scripts/Makefile.build:44: /home/mychardriver/Makefile: No such file or directory
make[2]: *** No rule to make target '/home/mychardriver//Makefile'.  Stop.
make[1]: *** [_module_/home/mychardriver/] Error 2
make[1]: Leaving directory '/mykermelsources'
make: *** [all] Error 2
  • 传输命令行参数但不起作用。 make SIDE=1

似乎永远不会传输SIDE参数/变量。

ifeq ($(SIDE),1)
MODULE_MAME = modulename_11
else
MODULE_MAME = modulename_22
endif

SRCS = drv/source.c lib/libsrc.c

OBJS =  $(SRCS:.c=.o)a

obj-m += $(MODULE_MAME).o
$(MODULE_MAME)-y = $(OBJS)

KDIR  := /mykermelsources/
PWD   := $(shell pwd)

all:
    $(MAKE) -C $(KDIR)  ARCH=arm M=$(PWD) SIDE=$(SIDE) modules
clean:
    $(MAKE) -C $(KDIR)  ARCH=arm M=$(PWD) clean

如何从相同的多个源文件构建2个内核模块?

0 个答案:

没有答案