【问题标题】:kernel: how to add a new source file for kernel build?内核:如何为内核构建添加新的源文件?
【发布时间】:2012-01-22 21:56:07
【问题描述】:

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

【问题讨论】:

    标签: kernel


    【解决方案1】:

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

    obj-$(CONFIG_ZERO_STIMULUS_FEATURE) += zerostimulus.o
    

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

    obj-y += zerostimulus.o
    

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

    【讨论】:

      【解决方案2】:

      没错!

      只是一个附录:在构建内核之前,您知道运行“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 文件,你也会发现设置依赖是多么容易。

      最好的问候, /天使

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-19
        • 1970-01-01
        • 2015-06-15
        • 2016-07-03
        • 1970-01-01
        • 2016-04-29
        相关资源
        最近更新 更多