编译linux内核驱动必须要有内核源码树。内核源码树就是一个编译好的linux内核源代码程序。
我是用的是vmware10 + ubuntu12.04。过程如下:
1、 jpj@ubuntu:~$ uname -r
查看在ubuntu系统运行的linux内核版本:
由此得知我的ubuntu系统运行的linux内核的版本为3.5.0
2、jpj@ubuntu:~$ apt-cache search linux-source
查看可以直接下载的内核源码包
3、jpj@ubuntu:~$ sudo apt-get install linux-source-3.5.0
我们选择下载内核包linux-source-3.5.0
下载完成后,内核源码包位于/usr/src目录中。
4、 jpj@ubuntu:~$cd /usr/src
jpj@ubuntu:/usr/src$sudo tar -jxvf linux-source-3.5.0.tar.bz2
进入到/usr/src目录中,发现linux-source-3.5.0.tar.bz2就是我们刚刚下载的linux内核源码包,
执行命令将其解压,解压后得到文件夹linux-source-3.5.0,里面便是linux内核的源代码。
5、jpj@ubuntu:/usr/src$ cd linux-source-3.5.0
jpj@ubuntu:/usr/src/linux-source-3.5.0$ make oldconfig
进入linux-source-3.5.0目录,用老的方法配置内核
6、jpj@ubuntu:/usr/src/linux-source-3.5.0$ sudo make bzImage
配置完成后编译内核,编译过程较慢。
7、 jpj@ubuntu:/usr/src/linux-source-3.5.0$ sudo make modules
内核编译完成后,可以编译模块,这个过程也比较慢。如果想要安装所有的模块(不是必须的),
则执行:
jpj@ubuntu:/usr/src/linux-source-3.5.0$ sudo make modules_install
8、以上步骤完成后,会在/lib/modules目录下生成一个文件夹3.0.51-generic。至此,linux内核
源码树构建完成。内核源码树构建完成后,我们便可以在(电脑)系统上进行linux驱动的编写、加载
等学习和试验。
假设,我们在/home/jpj目录下编译好了一个模块hello.ko,则执行命令:
jpj@ubuntu:~$ insmode hello.ko
jpj@ubuntu:~$ lsmod
则我们会看到模块hello.ko已经被加载到ubuntu 系统上去了。