模块编译Makefile解析

《Linux驱动开发详解》上有一个简单的HelloWorld驱动,用到了一个Makefile,如下

  1 ifneq ($(KERNELRELEASE),)  
  2 obj-m := hello.o
  3 else
  4 KDIR := /usr/src/kernels/2.6.18-238.el5-i686
  5 all:
  6         make -C $(KDIR) M=$(PWD) modules 
  7 clean:
  8         rm -f *.ko *.o *.mod.o *.mod.c *.symvers modul*
  9 endif

第1行:KERNELRELEASE是在Linux内核源码目录下Makefile里定义的,KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null),即输出Linux版本号。

如果现在是在内核源代码目录运行,则直接继续运行第2行,obj-m: 则表示该文件作为模块编译,编译生成hello.ko。

如果KERNELRELEASE没有被定义则跳到第4行,$(KDIR) 指定了内核源码的路径,M=$(PWD) 指定了该模块文件所在的路径。 、

78行做清理工作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值