linux – Arm armv5tejl的交叉编译

我正在尝试为linux系统交叉编译一个简单的hello world程序.

我有以下信息:

uname -a
Linux (none) 2.6.32.28 #130 PREEMPT Mon Feb 18 13:54:18 CST 2013 armv5tejl GNU/Linux

cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 421.06 
Features        : swp half fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 5

Hardware        : KeyASIC Ka2000 EVM
Revision        : 0000
Serial          : 0000000000000000

我想知道如何交叉编译这个系统.我尝试过以下方法:

> arm-linux-gnueabi-gcc helloworld.c -march = armv5 -o helloworld
> arm-linux-gnueabi-gcc helloworld.c -mcpu = arm926ej-s -o helloworld

但是当我尝试运行可执行文件时,我收到错误消息“command not found”.
我可能没有正确编译它,但我不知道在给定信息的情况下使用哪些编译选项.

(我知道helloworld.c一切正常).

ls -l helloworld
-rwxr-xr-x    1 0        0             8428 Jan  1 00:00 helloworld

which helloworld
which: applet not found

我把busybox-armv5l打开了

busybox which helloworld
(no output)

ldd也不在我试图编译的系统上(它是超越WifiSD卡).

ls -ln /lib/libc*
-rwxrwxrwx    1 0        0           244279 Jan 19  2012 /lib/libc.so.0
-rwxrwxrwx    1 0        0            13043 Jan 19  2012 /lib/libcrypt.so.0
-rwxr-xr-x    1 0        0          1251776 Jan  1 00:00 /lib/libcrypto.so.0.9.8

我试图运行/lib/libc.so.0来获取版本信息,我遇到了分段错误.似乎用-static编译修复了这个问题.所以我猜这是libc库的一个问题.感谢您的帮助.

解决方法:

我不得不使用-static标志在二进制文件中包含c库.感谢auselen.

上一篇:java – 如何在定位较旧的JDK版本时避免使用NoClassDefFoundErrors和NoSuchMethodErrors?


下一篇:以编程方式将TypeScript字符串编译为Javascript String