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

Linux驱动的配置和编译脚本

2009-09-28 11:11 169 查看
在完成了驱动程序代码的编写之后,接下来的任务就是编译。linux内核编译的过程是通过内核源码的根目录和各子目录中的Makefile分级管理的。其中根目录的Makefile是最重要的,它可以看成是其他Makefile最初的入口。它负责定义所有与体系结构无关的变量和目标,读取.config文件,并根据其信息最终生成vmlinux(elf格式的Linux内核)和modules(模块)。make通过向下递归调用子目录下的Makefile来编译这两个目标。

通常希望把驱动程序放在内核里,在配置内核时可以自由裁剪。这需要对内核配置脚本Kbuild有一定得了解。具体可以参考内核源码中的Documentation/kbuild目录下的相关文档

Kbuild是一组很容易使用的脚本。通常只需要关心个目录下的两个文件:Kconfig(2.6内核)和Makefile。

以hello模块为例

step1:代码编写

mini2440_hello_module.c 放置的位置/opt/FriendlyARM/mini2440/linux2.6.29/drivers/char
代码如下

/**********************************************************************************************/
/*文件:mini2440_hello1_module.c */
/*简介:HelloWorld */
/***********************************************************************************************/
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

static int hello1_module_init(void)
{
printk(KERN_ALERT"Hello,world/n");
return 0;
}
static void hello1_module_exit(void)
{
printk(KERN_ALERT"Goodbye, world/n");
}

module_init(hello1_module_init);
module_exit(hello1_module_exit);

step2: 在char 目录下打开Kconfig(可以理解为是内核的配置脚本)
添加
config MINI2440_HELLO1_MODULE
tristate "Mini2440/QQ2440 module1 sample"
depends on ARCH_S3C2440
default m if MACH_FRIENDLY_ARM_MINI2440
help
mini2440/QQ2440 module_sample

step 3:然后进入linux 2.6.29 目录下
$make menuconfig
在出现的页面下选择device Drivers---> 回车
Character devices 回车
选中 Mini2440/QQ2440 module1 sample
按空格键进行切换到M
则配置完成

step 4 : drivers/char目录下
打开Makefile文件
添加内容如下
obj-$(CONFIG_MINI2440_HELLO1_MODULE) += mini2440_hello1_module.o

step 5: 在linux 2.6.29目录下
输入命令 $make modules
则对内核中所有配置为模块的驱动程序进行编译了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: