Linux 2.6驱动开发环境搭建

虽然网上已经有很多关于linux驱动开发环境的介绍,但作为一个刚刚涉入linux驱动的菜鸟来说,凡是还是得事必躬亲,亲自操作一番,如果其中某些地方配置错误或不得要领,往往要花费很多时间。权且当做回顾吧,记录下我的具体的搭建过程。

内核版本: 2.6.38

操作系统: ubuntu 11.04

开发环境搭建过程:

1, 下载必要的开发工具包(binutils)

        sudo apt-get install build-essential 

2  下载linux源码(具体版本要和当前os的内核版本保持一致,uname -a查询)

sudo apt-get install linux-source-2..6.38  <移除: sudo apt-get remove linux-source-2.6.38>

   下载完成后,进入/usr/src目录下会发现linux源码包,执行 tar -xvf 解包

3  进入到解压后的目录,执行下列操作<如果不想每次都输入sudo,可以执行一次sudo -s,那么只要当前终端不退出,会一直保留root权限>

sudo make oldconfig    生成配置

sudo make  编译内核,需要一段时间,耐心等待

sudo make modules 编译模块

sudo make modules_install  安装模块

 

执行外上述操作,ubuntu的驱动开发环境基本搭建完成。下面就用经典的hello world进行测试。

hello.c:

#include 
#include 

static int hello_init(void)
{
    printk(KERN_ALERT "Hello World \n");
    return 0;
}

static void hello_exit(void)
{
    printk(KERN_ALERT "Goodbye \n");
}

module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("[email protected]");

Makefile如下:

obj-m := hello.o
KDIR= /lib/modules/$(shell uname -r)/build
PWD=$(shell pwd)
all:
	$(MAKE) -C $(KDIR) M=$(PWD) #modules

.PHONY:clean
clean:
	rm -f *.mod.c *.mod.o *.ko *.o *.tmp_versions

执行完make之后,会在当前目录下生成hell.ko(驱动模块),下面可以通过sudo insmod(rmmod) hello.ko 安装(卸载)模块.关于驱动模块的输出信息,可以通过dmsg查看。



你可能感兴趣的:(Linux,Kernel)