返回信息流呃 先说下
我不知道是不是因为EABI的原因
只是猜测可能跟这个有关
我自己编译了一个for ARM的交叉工具链
使用arm-xxx-linux-gnu-gcc helloworld.c -o helloworld
然后再用file命令看hellowworld这个可执行文件时
输出是:
helloworld: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, not stripped
但是这文件在arm板子上无法运行
如果使用别人做好的现成的交叉工具链(CodeSourcery)就没有问题,在板子上可以运行
#arm-none-linux-gnueabi-gcc helloworld.c -o helloworld
#file helloworld
输出:
helloworld: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.17, dynamically linked (uses shared libs), for GNU/Linux 2.6.17, not stripped
为什么用file命令看binary的时候输出不一样呢,一个是ARM一个是SYSV?
应该怎样build交叉工具链才能生成“SYSV”而不是“ARM”的binary呢?
请达人指教 谢先
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #5581同步于 2009/8/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
[求助]请教一下交叉工具链关于EABI的问题
guo
2009/8/14镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
你是指什么一样不一样?
gcc的configure?version?还是交叉编译器的target之类的?
我看过
不一样的地方挺多的
但是不知道是哪个地方产生的影响使binary的格式不一样
C library吗?
是我自己用cross compiler编译的glibc
错误信息很奇怪
如果我的binary是静态链接的话
在板子的linux系统里运行时没有任何输出
如果是动态链接,并且把相应的库文件放到/lib里面
运行时提示Illegal instruction
【 在 guo 的大作中提到: 】
: C library吗?
: 是我自己用cross compiler编译的glibc
: 错误信息很奇怪
: ...................
这就不清楚了,静态库也没报错退出?
显示无效指令的话,有可能制作的gcc有问题了。
不过,交叉编译确实挺麻烦的,有时候还和版本号有关。比如某些会有bug没修复什么的
静态链接的话
运行时没有任何输出
动态的话
提示说非法指令
【 在 yihang 的大作中提到: 】
: 这就不清楚了,静态库也没报错退出?
: 显示无效指令的话,有可能制作的gcc有问题了。
: 不过,交叉编译确实挺麻烦的,有时候还和版本号有关。比如某些会有bug没修复什么的