模块Makefile文件的编写
2013-01-17 13:30
162 查看
模块Makefile文件的编写
编写模块Makefile文件的目的是为了将编写好的驱动模块编译为.ko文件,进而加载内
核中。以下是一个Makefile文件的例子:
ifeq ($(KERNELRELEASE),)
KERNELDIR ?=/opt/FriendlyARM/mini2440/linux-2.6.32.2
PWD :=$(shell pwd)
all:
make -C $(KERNELDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.o *.mod.o *.mod.c *.symvers modul*
else
obj-m :=gpiocdev1.o
endif
① 第一条ifeq ($(KERNELRELEASE),),判断当前目录下KERNELRELEASE宏是否被定义(不为空),如果没有就执行else语句之前的命令;KERNELRELEASE宏只会在linux源码根目录下的Makefile被执行时被定义,因为我们当前所处目录一般都不在linux内核源码所在的目录,所以该宏都为空,故要执行下面的一条语句跳转到指定的linux内核目录下
② KERNLEDIR ?=/opt/FriendlyARM/mini2440/linux-2.6.32.2 跳转到指定的linux内核目录,该内核目录一般都是与你开发板上的所运行的linux内核版本相同(一般就是开发板制造商开发商所剪裁的linux内核)
③ PWD :=$(shell pwd),对PWD变量进行赋值,作用是将$(shell pwd)的返回结果,即当前目录的路径赋给PWD变量,这个变量指定了我们要编译的驱动程序所在的位置;
④ make -C $(KERNELDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux 这句是Makefile的规则:-C 选项的作用是将当前工作的目录转移到你所指定的位置,“M=”选项的作用是,当用户需要以某个内核为基础编译一个外部模块时,需要在make all 命令中加入“M=Dir”,程序会自动到你所指定的目录中查找模块源码,将其编译生成.ko文件,ARCH=arm, CROSS_COMPILE 是指定了内核编译的架构和交叉工具链;
⑤ rm -f *.o *.mod.o *.mod.c *.symvers *.modul* 删除一些中间文件,只保留生成的.ko文件;
编写模块Makefile文件的目的是为了将编写好的驱动模块编译为.ko文件,进而加载内
核中。以下是一个Makefile文件的例子:
ifeq ($(KERNELRELEASE),)
KERNELDIR ?=/opt/FriendlyARM/mini2440/linux-2.6.32.2
PWD :=$(shell pwd)
all:
make -C $(KERNELDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.o *.mod.o *.mod.c *.symvers modul*
else
obj-m :=gpiocdev1.o
endif
① 第一条ifeq ($(KERNELRELEASE),),判断当前目录下KERNELRELEASE宏是否被定义(不为空),如果没有就执行else语句之前的命令;KERNELRELEASE宏只会在linux源码根目录下的Makefile被执行时被定义,因为我们当前所处目录一般都不在linux内核源码所在的目录,所以该宏都为空,故要执行下面的一条语句跳转到指定的linux内核目录下
② KERNLEDIR ?=/opt/FriendlyARM/mini2440/linux-2.6.32.2 跳转到指定的linux内核目录,该内核目录一般都是与你开发板上的所运行的linux内核版本相同(一般就是开发板制造商开发商所剪裁的linux内核)
③ PWD :=$(shell pwd),对PWD变量进行赋值,作用是将$(shell pwd)的返回结果,即当前目录的路径赋给PWD变量,这个变量指定了我们要编译的驱动程序所在的位置;
④ make -C $(KERNELDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux 这句是Makefile的规则:-C 选项的作用是将当前工作的目录转移到你所指定的位置,“M=”选项的作用是,当用户需要以某个内核为基础编译一个外部模块时,需要在make all 命令中加入“M=Dir”,程序会自动到你所指定的目录中查找模块源码,将其编译生成.ko文件,ARCH=arm, CROSS_COMPILE 是指定了内核编译的架构和交叉工具链;
⑤ rm -f *.o *.mod.o *.mod.c *.symvers *.modul* 删除一些中间文件,只保留生成的.ko文件;
相关文章推荐
- 多个*.c文件编译生成一个模块驱动*.ko的makefile文件编写
- 第10章 多模块编译链接 Makefile文件的编写
- 多模块编译链接 Makefile文件的编写
- 我的第一个内核模块和makefile文件编写
- 多个*.c文件编译生成一个模块驱动*.ko的makefile文件编写
- 多个*.c文件编译生成一个模块驱动*.ko的makefile文件编写
- 多个*.c文件编译生成一个模块驱动*.ko的makefile文件编写
- Makefile文件编写详解
- Linux平台Makefile文件的编写基础篇
- Android.mk 浅析 模块编译Makefile编写
- 编写自己的makefile文件
- 如何编写makefile文件
- linux 下helloworld .so makefile文件编写菜鸟记录
- 纯C编写的读写widnows的INI格式文件的模块
- Linux平台Makefile文件的编写基础篇
- automake连载---关于两个文件configure.in和Makefile.am的编写
- Linux下C语言编程基础知识--gcc编译器的使用、MakeFile文件的编写
- 国嵌视屏学习第一天——makefile文件的编写
- Makefile文件的编写
- 基础知识(三)makefile文件编写初级篇