Linux_Ubuntu下驱动开发环境搭建(14.04, 15亲测可行)

Linux_Ubuntu下驱动开发环境搭建

linux下驱动需要编译内核

1.首先是基本的开发工具,如gcc,gdb,make等

apt-get install build-essential

2.其次是找到你所用的ubuntu的版本号:uname -r 

然后查看你要下载的源码包:apt-cache  search  linux-source 这个命令会得到可以下载的源码包

3.下载源:sudo apt-get   install  linux-source-3.2.0

会默认下载到/usr/src中,进入该文件夹并解压缩sudo  tar jxvf  linux-source-3.2.0.tar.bz2

得到源 /usr/src/linux-source-xxx

4.配置内核:有make oldconfig(命令行),make menuconfig(图形界面)

在此选用 :oldconfig来配置,进入/usr/src/linux-source-xxx并输入sudo make oldconfig  在配置的过程中如果需要选y,n,m直接点回车即可

(其中y指的是编译进内核,n是不编译,m指的是编译成模块)

5.然后开始编译内核:在/usr/src/linux-source-xxx下执行sudo make(需要等几个小时),然后sudo bzImage,结束后,可以看到在当前目录
下生成了一个新的文件:vmlinux,其属性为-rwxr-xr-x。

6.编译模块:还在在当前目录,make modules

安装模块:make modules_install

结束后在/lib/modules下生成xxx(版本号)和xxx-generic这两个目录

7.检测是否成功:

编写一个hello.c测试程序:可以放在/home下自己用户的目录下,如/home/danpi/drive

//hello.c
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello,world\n");
return0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye,cruel world\n");
 
}
module_init(hello_init);
module_exit(hello_exit);

然后编写Makefile,在当前目录下新建Makefile文件

#Makefile

obj-m:=hello.o
KERNELDIR:=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
modules:
(这里Tab键
) $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

注意Makefile中的Tab键

然后在/home/danpi/drive目录下分别执行:

make

insmod hello.c

rmmod hello

但是终端并没有出现hello world等,因为虚拟机的缘故,

这些信息已经写入了:/var/log/syslog 中

cat /var/log/syslog即可查看

over~

你可能感兴趣的:(驱动之路)