Linux内核驱动模块添加并编译(Makefile)

文章目录

  • 添加所需编译的目录
  • 添加驱动源代码
  • 编写Makefile
  • 在菜单中选中需要编译的选项
  • 编译自定义Linux内核菜单

配置好Linux内核菜单后就要在菜单下添加内容。根据用户的选择配置内核菜单的各种选项,Linux在编译的时候就就会根据选择好的模块源代码进行编译并整合到Image中,从而实现Linux内核的裁剪。

添加所需编译的目录

本次添加的自定义菜单在drivers目录下,要编译aamenutest里面的内容,需要在drivers下的Makefile文件中添加关联的目录名

obj-y   +=aamenutest/

添加驱动源代码

以上述自定义添加内核菜单为例,本次添加自己编写的源代码zxled.c。
将此源代码添加到自定义菜单aamenutest目录下。
在这里插入图片描述

编写Makefile

在aamenutest菜单下新建一个Makefile文件,并编写Makefile

obj-$(CONFIG_ZXLED)		+= zxled.o

该Makefile就一句代码,如果菜单中的宏名ZXLED被选中,就编译源代码zxled.c,经过编译成zxled.o文件。在菜单文件名中提到,菜单中的宏名被选中后,会自动在宏名的前面添加“CONFIG_”前缀。

在菜单中选中需要编译的选项

选择之后会在Linux根目录的.config中保存配置选项

这样就将自定义添加的模块源代码添加到了Linux内核中,在make menuconfig中配置好后,编译make就可以将自定义的模块源代码进行编译。

CONFIG_ZXLED=y

编译自定义Linux内核菜单

在Linux源码的根目录下make menuconfig配置好自定义的源码模块后,执行make对Linux内核进行编译。

[root@phoenix linux-3.5]# make -j8
  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: “include/generated/mach-types.h”是最新的。
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  CC      drivers/aamenutest/zxled.o
  LD      drivers/aamenutest/built-in.o
 
…………………………………………………………….

  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
[root@phoenix linux-3.5]#

你可能感兴趣的:(Linux)