对于一个学术项目,我正在寻找将源文件(myfile.c)添加到kernel/
目录,与exit.c
和fork.c
相同的目录。构建系统似乎不会自动获取新文件,因为我正在对“”中定义的函数执行“未定义引用”链接错误。我怎么能把这个文件合并?内核:如何为内核构建添加新的源文件?
4
A
回答
5
您需要将相应的目标文件添加到kernel/Makefile
。如果你对你的代码配置变量,那么你可以使用:
obj-$(CONFIG_ZERO_STIMULUS_FEATURE) += zerostimulus.o
如果你正在构建你的代码,而配置变量,那么你只把它添加到obj-y
变量:
obj-y += zerostimulus.o
配置变量扩展为y
,m
或n
,具体取决于功能是内置的,构建为模块还是关闭。然后建立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文件,你也会看到设置依赖关系是多么容易。
此致敬礼, /天使
相关问题
- 1. C Makefile - 如何在构建时添加头文件(linux内核)?
- 2. 构建Linux内核
- 3. 如何构建大型OpenCL内核?
- 4. OpenCL内核构建错误
- 5. 使用AOSP构建内核
- 6. 构建Android内核模块
- 7. 构建内核为biackfin目标
- 8. 程序如何通信 - 微内核单片内核exo内核
- 9. 何时创建新的solr内核?
- 10. 如何在Tiny Core Linux的扩展文件中添加新的内核模块?
- 11. 如何在没有内核源码树的情况下构建外部内核模块
- 12. 如何在linux内核的struct page中添加新字段
- 13. 构建Linux内核模块的问题
- 14. 从内核调用内核
- 15. Linux /内核:如何选择Videobuf2框架作为内核模块?
- 16. 如何获取内核头文件?
- 17. 如何为Cortex A8构建内核模块?
- 18. 编译我自己的内核(而不是从Linux内核源)
- 19. 如何获取QNX内核源代码?
- 20. 如何确定内核对象文件编译的Linux内核版本?
- 21. 如何为内核模块生成文件添加包含路径
- 22. 编译单内核文件
- 23. Linux内核头文件
- 24. CentOS 5内核头文件
- 25. Android内核源代码
- 26. 构建一个32位x86 Linux内核
- 27. Android内核构建作业被扼杀
- 28. 用Bazel构建内核模块
- 29. 构建Android内核时出错
- 30. 如何从内核源代码中提取x86相关文件?