2011-12-18 70 views
4

对于一个学术项目,我正在寻找将源文件(myfile.c)添加到kernel/目录,与exit.cfork.c相同的目录。构建系统似乎不会自动获取新文件,因为我正在对“”中定义的函数执行“未定义引用”链接错误。我怎么能把这个文件合并?内核:如何为内核构建添加新的源文件?

回答

5

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

obj-$(CONFIG_ZERO_STIMULUS_FEATURE) += zerostimulus.o 

如果你正在构建你的代码,而配置变量,那么你只把它添加到obj-y变量:

obj-y += zerostimulus.o 

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

2

没错!

只是一个附录:构建内核之前,你知道,在运行“make menuconfig”可以设置哪些功能将内建的内核映像(Ÿ),这将作为一个可加载模块启用()并且不会被启用(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文件,你也会看到设置依赖关系是多么容易。

此致敬礼, /天使