linux内核模块编译方法

目录

总述

整体编译

单独编译

自定义编译


总述

        方法一:整体编译,优点:命令比较简单,不需要多余的设置,不容易出错;缺点:每次编译需要检查所有的模块,特别耗时

        方法二:单独编译,单独编译某一个内核模块,优点:节省时间,尤其适合调试阶段;缺点:需要配置一些变量,可能与内核的配置不一致

        方法三:自定义编译,自己编写Makefile文件,优点:适用范围广,高效,比较好理解;缺点:内核中的源代码文件需要对比内核Makefile文件进行甄别,挑选出自己想要编译的部分,添加到objs中

整体编译

make -C 内核源代码路径 modules ARCH=处理器架构 CROSS_COMPILE=编译器路径

其中的路径要使用绝对路径,编译器路径也要绝对路径

编译完成可以使用命令导出

make modules_install INSTALL_MOD_PATH=安装路径 ARCH=处理器架构 CROSS_COMPILE=编译器路径

ARCH和CROSS_COMPILE变量也可以通过修改内核源码根目录下的Makefile指定

单独编译

例如单独编译drivers/usb/host/下的xhci-hcd.ko内核模块,可以使用以下方式

make CONFIG_USB_XHCI_HCD=m -C 内核源码路径 M=内核源码路径/drivers/usb/host modules ARCH=处理器架构 CROSS_COMPILE=编译器路径

CONFIG_USB_XHCI_HCD是查看drivers/usb/host/Makefile来的,m是编译成内核模块

自定义编译

自己编译Makefile文件

ARCH :=
CROSS_COMPILE :=
KDIR := 内核源码路径


obj-m := xxx.o
xxx-objs := xxx1.o xxx2.o

all:
	$(MAKE) -C $(KDIR) M=$(shell pwd) modules ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)

clean:
	$(MAKE) -C $(KDIR) M=$(shell pwd) clean

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值