2013-08-31 73 views
3

我想交叉编译一个简单的Hello系统的世界程序。交叉编译臂armv5tejl

我有以下信息:

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 

我想知道如何交叉编译这个系统。我曾尝试以下:

  • 臂-Linux的gnueabi-GCC helloworld.c -march = -o的ARMv5的HelloWorld
  • 臂-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库的问题。感谢您的帮助。

+0

复制helloworld的目录中目标系统内的以下命令的输出是什么? ls -l helloworld; 哪helloworld; ldd helloworld; – Balau

+0

Balau,我已经用输出更新了这个问题。 (无法将它们添加到此评论中。) –

+0

我希望你试图用'./helloworld'来运行它,如果是这样,请尝试使用'-static'标志进行编译。但警告,二进制将会更大。 – auselen

回答

3

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