作者askacis (ASKA)
看板LinuxDev
标题[问题] 请问有关arm-none-linux-gnueabi编译器的问题
时间Tue Dec 8 20:59:14 2009
文章有点长,还要请各位包含^^
小弟本来运作良好的平台环境如下:
CPU是ARM9系列(FA526)
Kernel 2.6.21
arm-linux-gcc (GCC) 3.4.4
busybox-1.13.4(static link)
Kernel Menuconfig中
[]Initial RAM filesystem and RAM disk 有开启
由於有另外一个平台(不同CPU)采用的编译器版本是arm-none-linux-gnueabi-gcc
於是乎小弟兴起了想将我这个平台用这个编译器编译的想法
上网google了一下发现要用此编译器编译kernel config中需要开启
Kernel Features --->
[ ] Use the ARM EABI to compile the kernel
以及
Floating point emulation --->
[ ] NWFPE math emulation
当我将之开启,一开始不知为何在编译过程中最後linking的会发生__aeabi_llsl之类
的函式未定义的问题,後来在 /kernel_source/arch/arm/lib/
里面找到问题点:
即是在这个资料夹里面有好几个档名一样的.C 及.S, C档只有函式宣告以及extern
而.S档是函式真正的定义...所以我将所有的C档杀掉之後让make可以吃到真正的
函式之後可以成功建出zImage(不晓得这样做是对的吗?)
当我开心的烧录并且开机之後进到要开始执行/init时(init_post())就没有反应了,
我trace了一下发觉最後kernel是停在kernel_execve()
[kernel_source/arch/arm/kernel/sys_arm.c]
里面的一段组合语言(似乎是在做跳转到userspace的动作?)
我的/init是一个script 主要内容如下:
######################################################
#!/bin/busybox ash
/bin/busybox mount -t sysfs /dev/sys /sys
/bin/busybox mount -t proc /proc
/bin/busybox mount -t devpts /dev/pts
# Populate /dev according to /sys
/bin/busybox mdev -s
/bin/busybox --install -s
/linuxrc
exec /sbin/init "$@" </dev/console >/dev/console 2>&1
######################################################
执行档busybox我用arm-none-linux-gnueabi-gcc重build过,也试过
将另外一个平台上可以执行的busybox放到我的板子上结果也是不行
另外也试过自己用写一个简单的hello world用该编译器编译并命名为
busybox放到板子上结果也是不行的...
不晓得是因为kernel开了EABI的关系吗?板上如果有大大有相关的经验可以告诉我
大概是哪边出了问题,小弟感激不尽 ^^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.87.142.254