Linux驱动的配置和编译脚本
2009-09-28 11:05
239 查看
在完成了驱动程序代码的编写之后,接下来的任务就是编译。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_hello_module.c */
/*简介:HelloWorld */
/***********************************************************************************************/
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_module_init(void)
{
printk(KERN_ALERT"Hello,world/n");
return 0;
}
static void hello_module_exit(void)
{
printk(KERN_ALERT"Goodbye, world/n");
}
module_init(hello_module_init);
module_exit(hello_module_exit);
step2: 在char 目录下打开Kconfig(可以理解为是内核的配置脚本)
添加
config MINI2440_HELLO_MODULE
tristate "Mini2440/QQ2440 module 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
则对内核中所有配置为模块的驱动程序进行编译了
通常希望把驱动程序放在内核里,在配置内核时可以自由裁剪。这需要对内核配置脚本Kbuild有一定得了解。具体可以参考内核源码中的Documentation/kbuild目录下的相关文档
Kbuild是一组很容易使用的脚本。通常只需要关心个目录下的两个文件:Kconfig(2.6内核)和Makefile。
以hello模块为例
step1:代码编写
mini2440_hello_module.c 放置的位置/opt/FriendlyARM/mini2440/linux2.6.29/drivers/char
代码如下
/**********************************************************************************************/
/*文件:mini2440_hello_module.c */
/*简介:HelloWorld */
/***********************************************************************************************/
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_module_init(void)
{
printk(KERN_ALERT"Hello,world/n");
return 0;
}
static void hello_module_exit(void)
{
printk(KERN_ALERT"Goodbye, world/n");
}
module_init(hello_module_init);
module_exit(hello_module_exit);
step2: 在char 目录下打开Kconfig(可以理解为是内核的配置脚本)
添加
config MINI2440_HELLO_MODULE
tristate "Mini2440/QQ2440 module 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
则对内核中所有配置为模块的驱动程序进行编译了
相关文章推荐
- Linux驱动的配置和编译脚本
- 【转】linux 编译安装nginx,配置自启动脚本
- linux驱动编译进内核或模块配置
- linux 编译安装nginx,配置自启动脚本
- 33 全志GPIO口的脚本配置及超声波测距模块的linux驱动
- Linux内核驱动学习(一)----内核简介 | 配置 | 编译| 安装(PC平台下)
- Linux内核驱动学习(一)----内核简介 | 配置 | 编译| 安装(PC平台下)
- Linux + ARM驱动开发环境配置(内核配置与编译)
- Linux系统下自行编译安装MySQL及基础配置全过程解析
- [置顶] 编写shell脚本以及利用函数实现批量安装Linux服务配置
- Linux 启动配置相关服务或脚本启动
- 学习笔记----linux下编译环境的配置
- Linux精简版配置及编译运行
- 【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介
- Boost下载安装编译配置使用指南(含Windows和Linux)
- linux用户登陆时,配置自动加载执行shell脚本的做法
- Linux 2.6.19.x 内核编译配置选项简介
- Linux系统驱动编译与运行
- linux下unix环境高级编程代码配置步骤及编译方法
- Linux配置开机自启动执行脚本的两种方法