星期一, 1月 21, 2008

no machine record defined

編核心時,遇到下面這個問題

arm-9tdmi-linux-gnu-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 吧 :)

沒有留言: