您的位置:首页 > 运维架构 > Linux

模块编译Makefile解析

2015-07-08 20:16 621 查看
《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行做清理工作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息