我有一台运行Linux(BusyBox)的ARM机器。
# uname -a
# Linux XXXXXXXX 2.6.28 #1 PREEMPT Fri Sep 26 22:47:38 UTC 2014 armv5tel GNU/Linux
我在Ubuntu 32位桌面上交叉编译了一个简单的程序:
./configure --host=arm-linux-gnueabi LDFLAGS="-static"
make
但是当我尝试在ARM机器上运行它时,它会给我分段错误错误。
程序非常简单:
#include <stdio.h>
int main()
{
printf("Hello, World!");
return 0;
}
以下是我已尝试/检查的一些事项:
arm-linux-gnueabi-strip
删除了可执行文件。我正在将我的可执行文件与目标机器中已有file
: # file my_program
# my_program: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.31, BuildID[sha1]=0x4b1f2773e54b141d5157b86f0f10438a372625c9, stripped
# file their_program
# their_program: ELF 32-bit LSB executable, ARM, version 1 (GNU/Linux), statically linked, stripped
我做错了什么?
答案 0 :(得分:2)
显然我的交叉编译工具链不是正确的。 我最终使用了crosstool-ng。它的使用非常简单,是一个很棒的工具,您只需要为您的设备选择合适的工具链。
我用crosstool-ng构建了一个arm-unknown-linux-uclibcgnueabi
工具链,解决了我的问题。