linux-内核模块中的obj-m变量
作者:互联网
在内核模块中,存在makefile obj-m变量.考虑以下:
CUR = $(shell uname -r)
DIR = /lib/modules/$(CUR)/build
PWD = $(shell pwd)
obj-m := m1.o m2.o
default:
$(MAKE) -C $(DIR) SUBDIRS=$(PWD) modules
在此Makefile中,默认目标包含一个调用内核子make的配方. obj-m变量不会导出到环境,因此sub-make无法使用它.但是,如果我们删除obj-m变量初始化,则此make不会编译m1和m2内核模块.因此,问题是:
在这种情况下,为什么内核子生成依赖于未导出的obj-m变量?
解决方法:
没有任何make变量导出到环境.
SUBDIRS被定义为make变量.
内核makefile在SUBDIRS中查找Makefile,对其进行读取,并使用其中定义的所有obj- *.
(根据documentation,您应该使用M而不是SUBDIRS.)
标签:makefile,linux-kernel,linux 来源: https://codeday.me/bug/20191122/2058208.html