kernel:如何为内核构建添加新的源文件?

时间:2011-12-18 05:22:26

标签: kernel

对于学术项目,我希望将源文件(myfile.c)添加到kernel/目录,与exit.cfork.c相同的目录。构建系统似乎没有自动获取新文件,因为我正在向myfile.c中定义的函数发出“未定义引用”链接错误。我怎么能把这个文件合并?

2 个答案:

答案 0 :(得分:7)

您需要将相应的对象文件添加到kernel/Makefile。如果您的代码有配置变量,那么您将使用:

obj-$(CONFIG_ZERO_STIMULUS_FEATURE) += zerostimulus.o

如果您在没有配置变量的情况下构建代码,那么您只需将其添加到obj-y变量中:

obj-y += zerostimulus.o

配置变量会扩展为ymn,具体取决于功能是内置功能,构建为模块还是关闭功能。然后构建obj-yobj-m变量。

答案 1 :(得分:3)

没错!

只是一个附录:在构建内核之前,您知道运行“make menuconfig”可以设置将构建内核映像的哪些功能( y ),这将是启用为可加载模块( m )且不会启用( n )。

如果您希望能够为新功能设置它,则可以编辑您在新文件的同一文件夹中找到的 Kconfig 文件。在您的情况下,“linux-x.y.z/kernel/Kconfig

这是一个例子:

config ZERO_STIMULUS_FEATURE
    tristate "My new feature"
    default m
    ---help---
      This is my brand new feature
      Here's a multi-line description

通常的错误是设置“config CONFIG_ZERO_STIMULUS_FEATURE”而不是“config ZERO_STIMULUS_FEATURE”:不要在此添加前缀“CONFIG_

如果您的功能无法作为模块加载,则必须使用“bool”关键字而不是“tristate”。看看其他Kconfig文件,你也会看到设置依赖项是多么容易。

祝你好运, /天使