arm-linux-gnueabi-gcc编译后的二进制文件不在ARM上执行

时间:2015-03-28 04:33:36

标签: linux gcc arm

我正在尝试为ARM-1136J-S处理器编译Hello World。当我使用CodeSourcery arm-none-linux-gnueabi-gcc(2008q3 edition)编译C源代码时,它在ARM上成功执行,但是当我使用arm-linux-gnueabi-gcc编译相同的代码时(通过apt-get安装) Ubuntu 12.01)它给出了以下错误:

./helloworld: line 1: syntax error: unexpected word (expecting ")")

两个可执行文件的readelf显示使用Ubuntu工具链编译的二进制文件具有以下额外属性:

Tag_CPU_unaligned_access: v6
Tag_DIV_use: Not allowed

如何使用Ubuntu工具链运行它?任何人都可以给出一些暗示吗?感谢

2 个答案:

答案 0 :(得分:1)

./helloworld: line 1: syntax error: unexpected word (expecting ")")

这根本不像本机代码错误 - 它看起来像一个脚本错误。你确定" helloworld"实际上是你编译的二进制。运行已编译的C代码二进制文件不会产生语法错误...

答案 1 :(得分:1)

检查您的内核是否支持THUMB二进制文件: zcat /proc/config.gz | grep THUMB

尝试在可执行文件上运行'readelf'。如果入口点地址是奇数(表示THUMB或混合ARM / Thumb)并且您的内核缺少THUMB可执行文件支持,则内核将拒绝您的二进制文件,并尝试将其作为shell脚本运行。