1.安装arm-none-linux-gnueabi交叉编译器
百度一下下载安装交叉编译器
export PATH=/arm-2009q3/bin:$PATH (一次性)
或者gedit ~/.bashrc 在文件的末尾添加 export PATH=/arm-2009q3/bin:$PATH (永久)
2.构造linux内核源码树
百度一下下载安装Linux内核
然后我们输入命令:export ARCH=arm 以及
export CROSS_COMPILE=arm-none-linux-gnueabi-
这里的CROSS_COMPILE环境变量就是指定交叉编译器。进入解压后的源码目录。假设我们的源码目录在~/Desktop/linux-source-2.6.27下,那么们先进入它的/arch/arm/configs文件夹中找一个config文件,至于选哪个合适说实话我也没弄清楚,当时我所选的是S3C_2410_defconfig文件。貌选哪一个文件得和目标平台有关。当选好config文件后,用cp 命令将其复制到~Desktop/linux-source-2.6.27 也就是我们的源码目录下,并更名为.nfig 更名后的文件需要使用ls -a才能显示出来。
做好这一切后,接下来就运行命令 sudo make menuconfig ,如果不出意外就会看到类似以下界面:
然后作用键选择退出这个界面。需要说明一点,如果在运行sudo make menuconfig 命令时出现以下错误提示信息:
*** Unable to find the ncurses libraries or the
*** required header files.
*** ‘make menuconfig’ requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
那么就运行命令:sudo apt-get insatll ncurses-dev
sudo apt-get install libncurses5-dev安装相应的软件。如果是在CentOS下则运行命令yum install -y ncurses-devel 即可。
接下来就依次运行以下命令:
sudo make oldconfig
sudo make (时间比较长)
sudo make bzImage
sudo make modules
sudo make modules_install
在网上看到很多人执行这些命令时遇到了些错误以及他们解决的办法。不过由于我试了几次都没有问题,在此就不贴出问题了,如果遇到可以“放狗搜一下”。
成功执行上述命令后,我们会在源码目录下看到vmlinux.o文件。
3.编译内核模块
内核模块的Makefile文件中,KERN_DIR = /lib/modules/$(shell uname -r)/build就是引用内核源码树的位置。当我们构建好了内核源码树后只需要将$(shell uname -r)换成安装好的内核源码版本就行。具体可以进入/lib/modules下查看。