如何与GNU autotools交叉编译armv5tel?

时间:2015-02-19 05:18:27

标签: gcc segmentation-fault arm cross-compiling autotools

我有一台运行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;
}

以下是我已尝试/检查的一些事项:

  • 我检查了两台机器上的md5哈希,以消除在通过网络复制可执行文件时出现问题的可能性
  • 使用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

我做错了什么?

1 个答案:

答案 0 :(得分:2)

显然我的交叉编译工具链不是正确的。 我最终使用了crosstool-ng。它的使用非常简单,是一个很棒的工具,您只需要为您的设备选择合适的工具链。

我用crosstool-ng构建了一个arm-unknown-linux-uclibcgnueabi工具链,解决了我的问题。