Chinaunix首页 | 论坛 | 博客
  • 博客访问: 347138
  • 博文数量: 69
  • 博客积分: 3077
  • 博客等级: 中校
  • 技术积分: 602
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-11 09:40
个人简介

或以为孤权重,妄相忖度

文章分类

全部博文(69)

文章存档

2012年(1)

2011年(10)

2010年(39)

2009年(19)

我的朋友

分类:

2010-08-06 14:57:51

編最新内核時,可能会遇到下面這個問題

/usr/local/arm/4.3.2/bin/arm-linux-ld: no machine record defined

在 google 查到的都是說將arch/arm/kernel/vmlinux.lds的最後兩行(如下)給註解掉,但都沒說是为什么。
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")


後來自己到 arch/arm/kernel/vmlinux.lds 裡看的時候,才發現別有洞天。原來那兩行的上頭寫著
/*
* These must never be empty
* If you have to comment these two assert statements out, your
* binutils is too old (for other reasons as well)
*/
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")


查了一下所使用的 binutils 版本是 2.15,與 HOST 上的 2.17 比起來確實有點舊了。
所以暫時方向先重新弄一版 crosstool 吧 :)
 
PS:根据arch/arm/mach-s3c2440/Kconfig文件中提到的141行:config ARCH_S3C2440和160行:config SMDK2440_CPU2440的内容可以看出这两项内容应当同时选择才是SMDK2440的配置,我当时就是漏选了SMDK2440那一项导致上面的问题,勾选后再编译就没有问题了。而且注释开头那两项ASSERT是治标不治本的做法!
 
阅读(5014) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~