2013-08-31 74 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。