用于ARM的Cross Compile helloworld

时间:2013-06-05 08:37:09

标签: gcc arm cross-compiling

我正在为ARM-CORTEX-A9尝试简单的交叉编译(cc): 为了简单起见,这就是c代码:

#include <stdio.h>
int main()
{
   printf("Hello World!\n");
   return 0;
}

arm上的本机编译工作正常,以gcc helloworld.c -o helloworld开始,而交叉编译以arm-xilinx-linux-gnueabi-gcc helloworld.c -o helloworld_cc

开始

海湾合作委员会版本:

nativ:gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) Target: arm-linux-gnueabihf

CC:gcc version 4.6.3 (Sourcery CodeBench Lite 2012.03-79) Target: arm-xilinx-linux-gnueabi

来自readelf的

ABI:

readelf-nativ:OS: Linux, ABI: 2.6.31 readelf-cc:OS: Linux, ABI: 2.6.16

链接库 - 交叉编译是静态链接的,因此不应错过任何库:

root@localhost:/temp# ldd helloworld
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6ed8000)
        /lib/ld-linux-armhf.so.3 (0xb6fce000)
root@localhost:/temp# ldd helloworld_cc
        not a dynamic executable

问题: 本机程序运行良好,cc总是以:

root@localhost:/tmp# ./helloworld_cc
-bash: ./helloworld_cc: No such file or directory

任何提示,希望我已经包含了足够的信息。

修改

将静态链接起来就可以了,但是现在文件的大小很大(678kB(CC静态)与4kB(本机)?为什么它会丢失libs,即使它说它没有动态链接?类似的问题:Cross compiling static C hello world for Android using arm-linux-gnueabi-gcc

arm-xilinx-linux-gnueabi-gcc helloworld.c -o helloworld_cc -static

1 个答案:

答案 0 :(得分:9)

Ther是lib文件夹Linaro Ubuntu中缺少的链接。它显示为readelf -a

[Requesting program interpreter: /lib/ld-linux.so.3]

将链接lib/ld-linux.so.3设置为lib/arm-linux-gnueabihf/ld-2.15.so

它有效。

感谢谢谢谢谢