全部博文(16)
2008年(16)
分类: LINUX
2008-10-21 15:23:11
s3c2410 linux2.6.8.1内核移植
编译环境:Debian
交叉编译工具: CROSS-3.3.2 (cross-3.3.2.tar.bz2)
内核包: linux-2.6.8.1 (s3c2410-linux-2.6.8.1.tar.bz2)
1.交叉编译工具安装的路径: /usr/local/arm/
内核包放在某个地方,自己决定吧!
解压 file.tar.bz2的命令: tar jxvf file.tar.bz2
2.把交叉编译器路径添加到系统的路径中:
#vi /etc/bash.bashrc
在最后加上:
PATH=$PATH:/usr/local/arm/3.3.2/bin
export PATH
启动新系统路径:
#source /root/.bashrc
显示新系统路径:
# echo $PATH
查看交叉编译器版本号
# arm-linux-gcc -v
3.修改 linux-2.6.8.1的根目录下的 makfile 文件:
进入内核被解压的目录后,运行命令
vi Makefile
找到CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- 这行,将它改为CROSS_COMPILE=arm-linux-(或者你系统所安装的arm-linux-gcc的编译器路径)
4.配置内核
运行 #make menuconfig
出错:scripts/kconfig/mconf.c:91: error: static declaration of ‘current_menu’ follows non-static declaration
scripts/kconfig/lkc.h:63: error: previous declaration of ‘current_menu’ was here
make[1]: *** [scripts/kconfig/mconf.o] Error 1
make: *** [menuconfig] Error 2
解决办法:
修改 scripts/kconfig/mconf.c文件 ,通过注释相关代码行问题解决:
static struct termios ios_org;
static int rows = 0, cols = 0;
static struct menu *current_menu; //********修改之前
将语句 static struct menu *current_menu 中的"static"去掉
变为struct menu *current_menu;
再运行:#make menuconfig
出错:
>> Unable to find the Ncurses libraries.
>>
>> You must install ncurses-devel in order
>> to use 'make menuconfig'
make[2]: *** [scripts/lxdialog/ncurses] 错误 1
make[1]: *** [menuconfig] 错误 2
make: *** [menuconfig] 错误 2
解决办法: 安装ncurses-dev
#apt-get install ncurses-dev
再运行: #make menuconfig
加载默认设置 kernel_2410.cfg
最后:# make zImage
完成移植
注:CROSS-3.3.2 (即arm-linux-gcc-3.3.2 )为开发板厂家自己命名的
交叉编译工具下载地址:
arm-linux-gcc-3.4.1
arm-linux-gcc-3.3.2