• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    linux 驱动之Kconfig文件和Makefile文件实例

    linux 驱动之Kconfig文件和Makefile文件实例

    在Linux编写驱动的过程中,有两个文件是我们必须要了解和知晓的。这其中,一个是Kconfig文件,另外一个是Makefile文件。如果大家比较熟悉的话,那么肯定对内核编译需要的.config文件不陌生,在.config文件中,我们发现有的模块被编译进了内核,有的只是生成了一个module。这中间,我们如何让内核发现我们编写的模块呢,这就需要在Kconfig中进行说明。至于如何生成模块,那么就需要利用Makefile告诉编译器,怎么编译生成这个模块。模仿其实就是最好的老师,我们可以以内核中经常使用到的网卡e1000模块为例,说明内核中是如何设置和编译的。

        首先,我们可以看一下,在2.6.32.60中关于e1000在Kconfig中是怎么描述的,

    config E1000 
     tristate "Intel(R) PRO/1000 Gigabit Ethernet support" 
     depends on PCI 
     ---help--- 
      This driver supports Intel(R) PRO/1000 gigabit ethernet family of 
      adapters. For more information on how to identify your adapter, go 
      to the Adapter  Driver ID Guide at: 
     
      http://support.intel.com/support/network/adapter/pro100/21397.htm> 
     
      For general information and support, go to the Intel support 
      website at: 
     
      http://support.intel.com> 
     
      More specific information on configuring the driver is in 
      file:Documentation/networking/e1000.txt>. 
     
      To compile this driver as a module, choose M here. The module 
      will be called e1000. 
    

        上面的内容是从drivers/net/Kconfig中摘录出来的。内容看上去不复杂,最重要的就是说明了模块的名称、用途、依赖的模块名、说明等等。只要有了这个说明,我们在shell下输入make menuconfig的时候就可以看到e1000这个选项了,输入y表示编译内核;输入n表示不编译;输入m表示模块编写,这是大家都知道的。

        那么,有了这个模块之后,需要编译哪些文件中,我们在drivers/net/Makefile看到了这样的内容,

    obj-$(CONFIG_E1000) += e1000/ 

        显然,这段代码只是告诉我们,要想编译e1000,必须要包含e1000这个目录,所以e1000目录下必然还有一个Makefile,果不其然,我们在e1000目录下发现了这个Makefile,内容如下,

    obj-$(CONFIG_E1000) += e1000.o 
     
    e1000-objs := e1000_main.o e1000_hw.o e1000_ethtool.o e1000_param.o 
    

        看了这个文件,其实大家心理就应该有底了。原来这个e1000模块最终生成的文件就是e1000.ko,依赖的文件就是e1000_main.c、e1000_hw.c、e1000_ethtool.c、e1000_param.c这四个文件。只要CONFIG_E1000被设置了,那么这个模块就会被正常编译。我们要做的就是打开这个开关就可以了,剩下kernel会帮我们搞定一切。当然,如果大家想把这个模块拿出来,自己用一个独立的module编译也是可以的。

        关于linux驱动的编译部分,其实就这两个配置文件比较重要。大家可以自己实际练习一下,进一步加深印象。

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    您可能感兴趣的文章:
    • Makefile/cmake/node-gyp中区分判断不同平台的方法
    • C语言 makefile学习及实现实例
    • Linux里Makefile是什么?它是如何工作的?
    • Linux 中makefile的命令包定义及使用
    • Linux makefile 和shell文件相互调用实例详解
    • 关于Linux下对于makefile的理解
    • Python实现生成简单的Makefile文件代码示例
    • Linux/Unix环境下的Make和Makefile详解
    • Linux下Makefile的automake生成全攻略
    • C++关于Makefile的详解含通用模板
    上一篇:mac 安装omyzsh后不执行~/.bash_profile、~/.bashrc的完美解决办法
    下一篇:linux C语言开发管道通信实例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    linux 驱动之Kconfig文件和Makefile文件实例 linux,驱动,之,Kconfig,文件,