如何配置并编译可以在ARM9下运行的linux内核。
1.修改Makefile
cdcrosstool-0.43/build/arm-9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/linux-2.6.24
我在建立交叉编译工具时crosstool-0,43将linux-2,6.24解压到这个目录下了,你可以选择把内核放在其他目录下。进入liunx-2.6.24目录
修改Makefile
.在Makefile中找到下面这一行:
SUBARCH:=$(shelluname-m|sed-es/i.86/i386/-es/sun4u/sparc64/\
-es/arm.*/arm/-es/sa110/arm/\
-es/s390x/s390/-es/parisc64/parisc/\
-es/ppc64/powerpc/)
前每句前加#,将它注销掉。
#SUBARCH:=$(shelluname-m|sed-es/i.86/i386/-es/sun4u/sparc64/\
#-es/arm.*/arm/-es/sa110/arm/\
#-es/s390x/s390/-es/parisc64/parisc/\
#-es/ppc64/powerpc/)
.找到下列行:
ARCH?=$(SUBARCH)
CROSS_COMPILE?=
改成:
ARCH:=arm
CROSS_COMPILE:=arm-9tdmi-linux-gnu-
注:这里的CROSS_COMPILE就是让你指定交叉编译器的路径,如果你设置好了PATH那么直接把这句加上就可以,若没有那么请指定路径,arm-unknown-linux-gnu是我编译的交叉工具名称,如果你指定的编译工具叫arm-linux那么CROSS_COMPILE:=arm-linux-。
2.内核配置
从arch/arm/configs中拷贝一份s3c2410_defconfig到linux-2.6.24目录下并改为config
cparch/arm/configs/s3c2410_defconfig./.config
makemenuconfig
如果有以下错误出现,请输入以下命令:
sudoapt-getinstalllibncurses5-dev
HOSTCCscripts/kconfig/lxdialog/checklist.o
在包含自scripts/kconfig/lxdialog/checklist.c:24的文件中:
scripts/kconfig/lxdialog/dialog.h:32:20:错误:curses.h:Nosuchfileordirectory
Infileincludedfromscripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:97:错误:expectedspecifier-qualifier-listbefore‘chtype’
scripts/kconfig/lxdialog/dialog.h:187:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/dialog.h:194:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/dialog.h:196:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/dialog.h:197:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/dialog.h:198:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/dialog.h:199:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/dialog.h:201:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/checklist.c:31:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/checklist.c:59:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/checklist.c:95:错误:expected‘)’before‘*’token
scripts/kconfig/lxdialog/checklist.c:在函数‘dialog_checklist’中:
scripts/kconfig/lxdialog/checklist.c:116:错误:‘WINDOW’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:116:错误:(即使在一个函数内多次出现,每个未声明的标识符在其
scripts/kconfig/lxdialog/checklist.c:116:错误:所在的函数内只报告一次。)
scripts/kconfig/lxdialog/checklist.c:116:错误:‘dialog’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:116:错误:‘list’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:116:警告:逗号表达式的左操作数不起作用
scripts/kconfig/lxdialog/checklist.c:129:警告:隐式声明函数‘getmaxy’
scripts/kconfig/lxdialog/checklist.c:129:错误:‘stdscr’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:130:错误:‘KEY_MAX’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:131:警告:隐式声明函数‘getmaxx’
scripts/kconfig/lxdialog/checklist.c:137:错误:‘COLS’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:138:错误:‘LINES’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:140:警告:隐式声明函数‘draw_shadow’
scripts/kconfig/lxdialog/checklist.c:142:警告:隐式声明函数‘newwin’
scripts/kconfig/lxdialog/checklist.c:143:警告:隐式声明函数‘keypad’
scripts/kconfig/lxdialog/checklist.c:143:错误:‘TRUE’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:145:警告:隐式声明函数‘draw_box’
scripts/kconfig/lxdialog/checklist.c:146:错误:‘structdialog_color’没有名为‘atr’的成员
scripts/kconfig/lxdialog/checklist.c:146:错误:‘structdialog_color’没有名为‘atr’的成员
scripts/kconfig/lxdialog/checklist.c:147:警告:隐式声明函数‘wattrset’
scripts/kconfig/lxdialog/checklist.c:147:错误:‘structdialog_color’没有名为‘atr’的成员
scripts/kconfig/lxdialog/checklist.c:148:警告:隐式声明函数‘mvwaddch’
scripts/kconfig/lxdialog/checklist.c:150:警告:隐式声明函数‘waddch’
scripts/kconfig/lxdialog/checklist.c:151:错误:‘structdialog_color’没有名为‘atr’的成员
scripts/kconfig/lxdialog/checklist.c:154:警告:隐式声明函数‘print_title’
scripts/kconfig/lxdialog/checklist.c:156:错误:‘structdialog_color’没有名为‘atr’的成员
scripts/kconfig/lxdialog/checklist.c:157:警告:隐式声明函数‘print_autowrap’
scripts/kconfig/lxdialog/checklist.c:164:警告:隐式声明函数‘subwin’
scripts/kconfig/lxdialog/checklist.c:171:错误:‘structdialog_color’没有名为‘atr’的成员
scripts/kconfig/lxdialog/checklist.c:171:错误:‘structdialog_color’没有名为‘atr’的成员
scripts/kconfig/lxdialog/checklist.c:189:警告:隐式声明函数‘print_item’
scripts/kconfig/lxdialog/checklist.c:192:警告:隐式声明函数‘print_arrows’
scripts/kconfig/lxdialog/checklist.c:195:警告:隐式声明函数‘print_buttons’
scripts/kconfig/lxdialog/checklist.c:197:警告:隐式声明函数‘wnoutrefresh’
scripts/kconfig/lxdialog/checklist.c:199:警告:隐式声明函数‘doupdate’
scripts/kconfig/lxdialog/checklist.c:202:警告:隐式声明函数‘wgetch’
scripts/kconfig/lxdialog/checklist.c:210:错误:‘KEY_UP’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:210:错误:‘KEY_DOWN’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:220:错误:‘FALSE’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:221:警告:隐式声明函数‘scrollok’
scripts/kconfig/lxdialog/checklist.c:222:警告:隐式声明函数‘wscrl’
scripts/kconfig/lxdialog/checklist.c:232:警告:隐式声明函数‘wrefresh’
scripts/kconfig/lxdialog/checklist.c:293:警告:隐式声明函数‘delwin’
scripts/kconfig/lxdialog/checklist.c:297:错误:‘KEY_LEFT’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:298:错误:‘KEY_RIGHT’未声明(在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:310:警告:隐式声明函数‘on_key_esc’
scripts/kconfig/lxdialog/checklist.c:312:错误:‘KEY_RESIZE’未声明(在此函数内第一次使用)
make[1]:***[scripts/kconfig/lxdialog/checklist.o]错误1
make:***[menuconfig]错误2
运行成功就可以按照需要配置内核选项了,具体配置选项的作用说明稍后介绍。
这里有几个重要的地方需要注意:
SystemType-->ARMsystemtype()-->
这个地方一定要选择和你的板子相同的类型,我们针对的开发板是s3c2410这里选择s3c2410。
在内核为2.4的时候,minicom默认的串行端口为ttyS0,在2.6里为ttySAC0
所以BootOption-->Defaultkernelcommandstring里输入
console=ttySAC0,115200(115200为波特率)
关闭consoledisplaydriversupport所有相关选项否则编译出错。
配置好以后,退出保存,默认保存在.config里.
3.编译内核:
makeclean
不能用makemrproper,如果使用了它,它将刚才的config清理掉
makedep
编译相关依赖文件
makezImage
最终的编译命令,有时可以直接用make(2.6.x版本以上).
最后编译好的镜像文件放在/linux-2.6.24/arch/arm/boot/zImage
Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核Ubuntu7.10下用Gcc4.1.1交叉编译工具编译linux-2.6.24内核
阅读(469) | 评论(0) | 转发(0) |