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

 更新时间:2017年01月18日 17:05:33   投稿:lqh  
这篇文章主要介绍了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驱动的编译部分,其实就这两个配置文件比较重要。大家可以自己实际练习一下,进一步加深印象。

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

相关文章

  • linux获取系统启动时间示例详解

    linux获取系统启动时间示例详解

    这篇文章主要介绍了linux获取系统启动时间的示例,需要的朋友可以参考下
    2014-02-02
  • shell脚本批量将文件复制到指定的文件夹下

    shell脚本批量将文件复制到指定的文件夹下

    本文主要介绍了shell脚本批量将文件复制到指定的文件夹下,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • linux系统下dd命令的使用方法

    linux系统下dd命令的使用方法

    这篇文章主要介绍了linux系统下dd命令的使用方法,dd命令的功能是把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换
    2014-01-01
  • Shell脚本变量的只读 删除 类型及注释语法基础

    Shell脚本变量的只读 删除 类型及注释语法基础

    这篇文章主要介绍了Shell脚本变量的只读删除类型及注释语法基础详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 利用shell创建文本菜单与窗口部件的方法

    利用shell创建文本菜单与窗口部件的方法

    这篇文章主要给大家介绍了关于利用shell创建文本菜单与窗口部件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • shell性能测试脚本优化的技巧

    shell性能测试脚本优化的技巧

    这篇文章主要介绍了shell性能测试脚本优化技巧,本文通过实例截图的形式给大家展示,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Linux中sftp常用命令整理

    Linux中sftp常用命令整理

    sftp命令是一款交互式的文件传输程序,不仅对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能。这篇文章整理了Linux中sftp的常用命令,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Linux中cut命令的基本使用详解

    Linux中cut命令的基本使用详解

    cut命令是一个Linux/Unix命令,用于从文件或标准输入中提取字段并输出到标准输出,这篇文章主要介绍了Linux系统之cut命令的基本使用,需要的朋友可以参考下
    2023-05-05
  • 一些你必须要熟练掌握的git命令

    一些你必须要熟练掌握的git命令

    git 现在的火爆程度非同一般,它被广泛地用在大型开源项目,团队开发,以及独立开发者,甚至学生之中。下面这篇文章主要给大家分享了一些你必须要熟练掌握的git命令,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • linux shell之通过标识测试文件系统属性的方法示例

    linux shell之通过标识测试文件系统属性的方法示例

    今天小编就为大家分享一篇关于linux shell之通过标识测试文件系统属性的方法示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04

最新评论