免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1217 | 回复: 0
打印 上一主题 下一主题

Ubuntu7.10系统下使用 Gcc4.1.1交叉编译工具编译linux-2.6.24内核 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-13 22:16 |只看该作者 |倒序浏览

               
       
       
       
       
     Ubuntu7.10系统下使用arm
linux Gcc4.1.1交叉编译工具编译为s3c2410板编译linux2.6.24内核
  
在前一篇文章中我介绍了如何使用crosstool-0.43建立Gcc4.1.1的arm
linux交叉编译环境。这里介绍如何配置并编译可以在ARM9
下运行的linux内核。
1.修改Makefile
cd
crosstool-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目录
[color="#000000"]修改Makefile
.在Makefile中找到下面这一行:
SUBARCH
:= $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
        -e s/arm.*/arm/ -e s/sa110/arm/ \
        -e s/s390x/s390/ -e
s/parisc64/parisc/ \
         -e s/ppc64/powerpc/ )
前每句前加#,将它注销掉。
[color="#000080"]#SUBARCH
:= $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
#        -e
s/arm.*/arm/ -e s/sa110/arm/ \
#        -e
s/s390x/s390/ -e s/parisc64/parisc/ \
#       
-e s/ppc64/powerpc/ )
[color="#314004"]
.找到下列行:
        ARCH?=$(SUBARCH)
        CROSS_COMPILE
?=
[color="#000000"]改成:[color="#000000"]
        ARCH
:= arm
        CROSS_COMPILE
:=arm-9tdmi-linux-gnu-[color="#000000"]
[color="#000000"]注:这里的[color="#000000"]CROSS_COMPILE[color="#000000"]就是让你指定交叉编译器的路径,如果你设置好了[color="#000000"]PATH[color="#000000"]那么直接把这句加上就可以,若没有那么请指定路径,arm-unknown-linux-gnu
[color="#000000"]是我编译的交叉工具名称,如果你指定的编译工具叫arm-linux
[color="#000000"]那么[color="#000000"]CROSS_COMPILE:=arm-linux-。
[color="#000000"]2.内核配置
[color="#000000"]从arch/arm/configs
中拷贝一份 s3c2410_defconfig
到linux-2.6.24目录下并改为
config
cp
arch/arm/configs/s3c2410_defconfig ./.config
make
menuconfig
如果有以下错误出现,请输入以下命令:
sudo
apt-get install libncurses5-dev

HOSTCC
scripts/kconfig/lxdialog/checklist.o
在包含自
scripts/kconfig/lxdialog/checklist.c:24
的文件中:
scripts/kconfig/lxdialog/dialog.h:32:20:
错误:
curses.h:No
such file or directory
In
file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:97:
错误: expected
specifier-qualifier-list before ‘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:
错误: ‘struct
dialog_color’ 没有名为
‘atr’
的成员
scripts/kconfig/lxdialog/checklist.c:146:
错误: ‘struct
dialog_color’ 没有名为
‘atr’
的成员
scripts/kconfig/lxdialog/checklist.c:147:
警告: 隐式声明函数
‘wattrset’
scripts/kconfig/lxdialog/checklist.c:147:
错误: ‘struct
dialog_color’ 没有名为
‘atr’
的成员
scripts/kconfig/lxdialog/checklist.c:148:
警告: 隐式声明函数
‘mvwaddch’
scripts/kconfig/lxdialog/checklist.c:150:
警告: 隐式声明函数
‘waddch’
scripts/kconfig/lxdialog/checklist.c:151:
错误: ‘struct
dialog_color’ 没有名为
‘atr’
的成员
scripts/kconfig/lxdialog/checklist.c:154:
警告: 隐式声明函数
‘print_title’
scripts/kconfig/lxdialog/checklist.c:156:
错误: ‘struct
dialog_color’ 没有名为
‘atr’
的成员
scripts/kconfig/lxdialog/checklist.c:157:
警告: 隐式声明函数
‘print_autowrap’
scripts/kconfig/lxdialog/checklist.c:164:
警告: 隐式声明函数
‘subwin’
scripts/kconfig/lxdialog/checklist.c:171:
错误: ‘struct
dialog_color’ 没有名为
‘atr’
的成员
scripts/kconfig/lxdialog/checklist.c:171:
错误: ‘struct
dialog_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
运行成功就可以按照需要配置内核选项了,具体配置选项的作用说明稍后介绍。
[color="#555555"]这里有几个重要的地方需要注意:[color="#555555"]
System
Type --> ARM system type ()
-->
[color="#000000"]这个地方一定要选择和你的板子相同的类型,我们针对的开发板是[color="#000000"]s3c2410[color="#000000"]这里选择[color="#000000"]s3c2410[color="#000000"]。[color="#000000"]
[color="#000000"]在内核为[color="#000000"]2.4[color="#000000"]的时候,[color="#000000"]minicom[color="#000000"]默认的串行端口为[color="#000000"]ttyS0,[color="#000000"]在[color="#000000"]2.6[color="#000000"]里为[color="#000000"]ttySAC0
[color="#000000"]所以Boot
Option --> Default kernel command string[color="#000000"]里输入
console=ttySAC0,115200
(115200[color="#000000"]为波特率[color="#000000"])
[color="#000000"]关闭console
display driver support
所有相关选项否则编译出错。
[color="#000000"]
[color="#000000"]配置好以后,退出保存,默认保存在[color="#000000"].config[color="#000000"]里[color="#000000"].[color="#555555"]
[color="#000000"]
3.[color="#000000"]编译内核:
make
clean
[color="#000000"]不能用make
mrproper[color="#000000"],如果使用了它,它将刚才的[color="#000000"]config[color="#000000"]清理掉
make
dep
[color="#000000"]编译相关依赖文件
make
zImage
最终的编译命令,有时可以直接用make(2.6.x版本以上).
最后编译好的镜像文件放在/linux-2.6.24/arch/arm/boot/zImage
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66249/showart_530006.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP