Kernel 内核:如何为内核构建添加新的源文件?
对于一个学术项目,我希望将一个源文件(myfile.c)添加到Kernel 内核:如何为内核构建添加新的源文件?,kernel,Kernel,对于一个学术项目,我希望将一个源文件(myfile.c)添加到kernel/目录,与exit.c和fork.c目录相同。生成系统似乎不会自动拾取新文件,因为我遇到了指向myfile.c中定义的函数的“未定义引用”链接错误。如何合并此文件?您需要将相应的对象文件添加到内核/Makefile。如果您的代码有一个配置变量,那么您将使用: obj-$(CONFIG_ZERO_STIMULUS_FEATURE) += zerostimulus.o 如果在代码中构建时没有配置变量,则只需将其添加到obj-
kernel/
目录,与exit.c
和fork.c
目录相同。生成系统似乎不会自动拾取新文件,因为我遇到了指向myfile.c
中定义的函数的“未定义引用”链接错误。如何合并此文件?您需要将相应的对象文件添加到内核/Makefile
。如果您的代码有一个配置变量,那么您将使用:
obj-$(CONFIG_ZERO_STIMULUS_FEATURE) += zerostimulus.o
如果在代码中构建时没有配置变量,则只需将其添加到obj-y
变量:
obj-y += zerostimulus.o
配置变量扩展为y
、m
或n
,具体取决于功能是内置的、作为模块内置的还是关闭的。然后构建了obj-y
,obj-m
,变量。没错
只是一个补充:在构建内核之前,您知道运行“makemenuconfig
”可以设置将在内核映像(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-stimultium\u-FEATURE
”而不是“config-ZERO-stimultium\u-FEATURE
”:不要在这里添加前缀“config\u
”
如果功能不能作为模块加载,则必须使用“bool
”关键字,而不是“tristate
”。看看其他Kconfig文件,您还将看到设置依赖项是多么容易
致以最良好的祝愿,
/天使