编译linux内核模块

大城市里の小女人 提交于 2020-01-28 16:33:46

本文内容适用于编译运行于本机的内核模块。

开发内核模块往往第一步的编译环境设置最容易出错,需要安装的主要有build-essential, 对应版本的linux-header。

然后就是Makefile的写法

1 obj-m := hello.o2 # 网上很多是自己下载源码,然后用的是3 # KDIR :=/usr/src/kernel-source-2.6.8类似的路径,这样很容易出错,造成4 # 编译出来的内核版本号和实际运行的内核版本号不一致。在insmod时就会得到这5 # 个错误 insmod: error inserting '': -1 Invalid module format6 KDIR :=/lib/modules/$(shell uname -r)/build7 PWD := $(shell pwd)8 default: 9     $(MAKE) -C $(KDIR) M=$(PWD) modules

根据这个Makefile,直接make,就能正确编译。

最准确的,见The Linux Kernel Module Programming Guide:2.2. Compiling Kernel Modules

 

其他参考:

 

How to Create, Compile, Load Linux LKM Loadable Kernel Modules

Writing device drivers in Linux: A brief tutorial 

我第一个字符设备驱动程序的痛苦经历

如何编译linux第一个模块 hello.c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!