linux - ARM armv5tejl 交叉编译

标签 linux gcc compilation arm

我正在尝试为 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

但是当我尝试运行可执行文件时,我收到错误消息“找不到命令”。 我可能没有正确编译它,但根据我掌握的信息,我不知道要使用什么编译选项。

(我知道 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 也不在我要为其编译的系统上(它是 transcend 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。

关于linux - ARM armv5tejl 交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18548230/

相关文章:

linux - 环境变量中的波浪号扩展

c# - 如何在Linux服务器上轻松运行C#代码?

c++ - GCC - 包含编译标志的宏

c - "expected ' ) ' before ' * ' token"- 在 linux 上但不在 Windows 上

由于 $compile,Javascript(Angular)嵌套指令加载两次

c++ - 库无法正确导出功能

linux - 切换到 Linux

c - 'falign-loops' 优化发生的例子?

c - C程序立即执行后退出,但它有一个while(1)循环

c++ - C++ 快速编译