【问题标题】:obj-m variable in a kernel module内核模块中的 obj-m 变量
【发布时间】:2014-01-15 13:59:27
【问题描述】:

在内核模块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 中,default 目标包含一个调用内核sub-make 的配方。 obj-m 变量不会被导出到环境中,因此 sub-make 不能使用它。但是如果我们删除 obj-m 变量初始化,那么这个 make 不会编译 m1m2 内核模块。所以,问题是:

为什么在这种情况下内核 sub-make 依赖于未导出的 obj-m 变量?

【问题讨论】:

    标签: linux makefile linux-kernel


    【解决方案1】:

    没有任何 make 变量被导出到环境中。

    SUBDIRS 被定义为 make 变量。 内核makefile在SUBDIRS中查找Makefile,读取它,并使用其中定义的任何obj-*

    (根据documentation,您应该使用M 而不是SUBDIRS。)

    【讨论】:

    • 感谢您的明确回答,但您能否获得我可以找到的官方文档的证明链接?
    猜你喜欢
    • 2014-04-16
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2021-12-13
    • 1970-01-01
    相关资源
    最近更新 更多