linux加载驱动的两种makefile文件
2012-10-13 09:00:25 来源:WEB开发网加载驱动过程中,需要个Makefile文件来完成编译的命令。自己经常把把Makefile里面的命令搞混,这次,专门的研究了一下Makefile文件里面的东东,特写出来和大家分享一下
一 一个简单的驱动程序例子:
/*======================================================================
A kernel module: book
This example is to introduce module params
The initial developer of the original code is Baohua Song
<author@linuxdriver.cn>. All Rights Reserved.
======================================================================*/
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static char *book_name = "dissecting Linux Device Driver";
static int num = 4000;
static int book_init(void)
{
printk(KERN_INFO " book name:%s\n",book_name);
printk(KERN_INFO " book num:%d\n",num);
return 0;
}
static void book_exit(void)
{
printk(KERN_INFO " Book module exit\n ");
}
module_init(book_init);
module_exit(book_exit);
module_param(num, int, S_IRUGO);
module_param(book_name, charp, S_IRUGO);
MODULE_AUTHOR("Song Baohua, author@linuxdriver.cn");
MODULE_DESCRIPTION("A simple Module for testing module params");
MODULE_VERSION("V1.0");
二 Makefile文件有两种写法:
一种是:
# Add your debugging flag (or not) to CFLAGS
ifneq ($(KERNELRELEASE),)
obj-m := boot.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
另外一种是:
# Add your debugging flag (or not) to CFLAGS
ifneq ($(KERNELRELEASE),)
obj-m := boot.o
else
KERNELDIR ?= /usr/src/linux-headers-2.6.38-8-generic
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
比较两者可以发现,该两个Makefile的唯一差别是KERNELDIR的不同,
- ››linux下两台服务器文件实时同步方案设计和实现
- ››Linux文件描述符中的close on exec标志位
- ››Linux下管道使用的一些限制
- ››Linux 误删/usr/bin 解决方法
- ››linux 添加新用户并赋予sudo执行权限
- ››linux常用软件安装方法
- ››Linux的分区已经被你从Windows中删除,系统启动后...
- ››linux enable命令大全
- ››Linux实现基于Loopback的NVI(NAT Virtual Interfa...
- ››Linux远程访问windows时,出现"连接被对端重...
- ››linux中使用head命令和tail命令查看文件中的指定行...
- ››linux swap 分区调控(swap分区 lvm管理)
更多精彩
赞助商链接