linux内核模块Makefile

本文介绍了两种在Linux环境下编译内核模块的方法。一种是当模块代码位于内核源码目录外部时的编译流程;另一种是当模块位于内核源码目录内部时的编译方法。文中详细展示了两种情况下的Makefile配置。

方式一:

        当linux内核驱动模块代码位于内核源码目录树外部时,以helloworld模块为例,Makefile 写法如下:

$(warning KERNELRELEASE=$(KERNELRELEASE))
ifeq ($(KERNELRELEASE),)

#KERN_DIR = /home/huang/kernel3.10/linux-3.10.0-1160
#KERN_VER = $(shell uname -r)

KERNELDIR ?= /lib/modules/$(shell uname -r)/build  
PWD := $(shell pwd)

modules:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:
	rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module* modules*

.PHONY: modules modules_install clean

else
    obj-m := helloword.o
endif

方式二:

        当helloworld位于linux内核源码目录下(假设位于:linux-3.10/char/hellowarld/)时,只需要在目录下添加如下Makefile即可

obj-m := helloword.o
#obj-${CONFIG_HELLO_WORLD} := helloword.o

如果helloword有多个源码文件,可以改成如下:

obj-$(CONFIG_HELLO_WORLD) += helloword.o
helloworld-objs := helloword-1.o helloword-2.o helloword-3.o

     还要在helloword上一层(linux-3.10/char)Makefile 中要将helloworld 目录包含进来

obj-m += helloworld
# obj-${CONFIG_HELLO_WORLD} += helloworld

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值