Linux驱动的配置和编译脚本
在完成了驱动程序代码的编写之后,接下来的任务就是编译。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_FRIE
相关文档:
2009 年 4 月 23 日
本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性,以加深读者印象。
背景
Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微 ......
由于 Linux 良好的用户权限管理体系,病毒往往是 Linux 系统管理员最后才需要考虑的问题。以往,Linux 上的杀毒软件主要是为企业的邮件和文件服务器所设计的。如今,随着 Linux 桌面用户数量的增长,桌面用户在受益于 Linux 系统对病毒较强的天然免疫力的同时,也需要杀毒软件清理从网络或U盘带来的WIndows病毒。尽管那些 ......
安装环境
CentOS 4.3 Final
软件列表
httpd-2.0.61.tar.gz
db-4.3.29.tar.gz
subversion-1.3.2.tar.gz
软件位置
/data/software
安装步骤
#mkdir /data/software/pkg
-p
安装Berkeley DB
#cd
/data/software/pkg
#tar zxvf ../db-4.3.29.tar.gz
#cd
db-4.3.29/docs
#../dist/configure
#make &&am ......
来源:http://linux.chinaunix.net/ebook/doc/2009/09/17/1135830.shtml
本文介绍在centos 5.x环境下通过yum源的扩展使用munin、 monit、ntop工具来监管你的应用程序和服务器。题为懒人说说的是简便的安装方式而已,将强大的功能配置简单的应用起来是很重要的,可以节省时间并提高效率。
Monit:http:#www.tildeslas ......
当linux中的C api函数发生异常时,一般会将errno变量(需include
errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是
errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。有下面几种方法 ......