Linux驱动学习-----Ubuntu12.04构建Linux源码树

LDD3中第二章 :构造和运行模块中讲到,要想为2.6.x及以上版本构造模块,还必须在自己的系统中配置并构造好内核树。先前的版本只要求有一套内核头文件就够了。因为2.6内核的模块要和内核源代码树中的目标文件链接,通过这种方式可得到一个更加健壮的模块装载器,但也要这些目标文件存在于内核目录树中。这样,读者首先应该准备好一个内核源代码(可以是来自kernel.org的纯源码,也可以是发行版的内核,不过推荐用kernel.org的内核),构建一个新内核,然后安装到自己的系统中。

下面首先来说一下如何构建和自己系统内核相同版本的新内核。内核源码是不区分32位和64位的。在配置的时候回区分。不过这些都不是我们担心的问题。

对于Ubuntu12.04来说。

1)首先检查自己的版本:

uname -r
3.2.0-79-generic-pae

2)搜索内核源码文件:

sudo apt-cache search linux-source
3)下载源码文件:

sudo apt-get install linux-source-3.2.0

下载完成会在/usr/src目录中出现一个文件夹:

linux-source-3.2.0
4)进入这个目录然后:

cd linux-source-3.2.0/ 

然后  

sudo tar xjvf linux-source-3.2.0.tar.bz2
5)进入解压的目录:

cd linux-source-3.2.0/ 
然后
sudo make oldconfig

这一步会产生一个   .config 的配置文件

6)编译:

sudo make

我的在这一步执行快到最后的时候产生了一个错误:ERROR: "__modver_version_show" [drivers/staging/rts5139/rts5139.ko] undefined!

应该是RTS5139驱动的问题。反正我们也不用这个驱动,解决 方法如下:

sudo vi .config
然后修改 CONFIG_RTS5139=m改为   CONFIG_RTS5139=n

然后继续

 sudo make

7)编译模块:

sudo make modules

8)安装模块:

sudo make modules_install
9)成功后重启。



你可能感兴趣的:(Linux驱动学习-----Ubuntu12.04构建Linux源码树)