ifneq ($(KERNELRELEASE),) //如果变量KERNELRELEASE不等于空,则执行obj-m := hello.o;一开始的时候KERNELRELEASE为空、第二次不是空
obj-m := hello.o //变化
else
KDIR := /opt/FriendlyARM/mini2440/linux-2.6.32.2 //变化 目录是适合ARM的linux,即我们自己解压的linux文档
/* 依赖的内核源代码的路径*/
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
//make -C 即进入$(KDIR)的目录下,利用它的目录下的makefile进行编译
/*M=$(PWD)表示内核模块代码在哪*/
/*modules编译的是模块*/
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
//内核模块由一个源文件构成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
ifneq ($(KERNELRELEASE),)
obj-m := hello1.o//决定了内核模块的名字
hello1-objs := hello.o add.o//hello 这个内核模块是由哪些源文件编译出来的呢
else
KDIR := /lib/modules/2.6.31.5-127.fc12.i686.PAE/build //变化 它是在X86平台下运行的代码。。是linux系统的内核 生成的文件要在X86平台运行。在
//嵌入式上不好用
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
//内核模块有多个源文件构成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |