对于一个学术项目,我正在寻找将源文件(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. 如何从内核源文件签名内核模块?
- 3. 构建Linux内核
- 4. 将头文件添加到Linux内核
- 5. 从多个源文件构建一个内核模块
- 6. 构建内核模块针对:无法找到函数的内核头文件
- 7. 如何构建大型OpenCL内核?
- 8. 构建opencl内核失败
- 9. OpenCL内核构建错误
- 10. 构建内核时make menuconfig
- 11. 未能构建Android内核
- 12. 构建Android内核模块
- 13. 使用AOSP构建内核
- 14. 如何理解Linux内核模块的“构建单独文件”?
- 15. 构建内核为biackfin目标
- 16. 将新设备添加到FreeBSD内核
- 17. 开关Solr的内核添加文档
- 18. 为什么叫内核的内核?
- 19. Jupyter:如何在新内核
- 20. 程序如何通信 - 微内核单片内核exo内核
- 21. 建筑内核
- 22. 何时创建新的solr内核?
- 23. 如何在Tiny Core Linux的扩展文件中添加新的内核模块?
- 24. 如何在没有内核源码树的情况下构建外部内核模块
- 25. 如何将新的类或控制器添加到内核中?
- 26. 如何在linux内核的struct page中添加新字段
- 27. 如何注册OMX内核添加了新的解码器
- 28. 在Linux内核中为头文件添加路径
- 29. 内核中ping的来源
- 30. 构建Android - 如何在mkbootimg命令中加载内核映像?