【问题标题】:Error when building arm-elf-gcc构建 arm-elf-gcc 时出错
【发布时间】:2010-08-27 10:32:57
【问题描述】:

我正在尝试构建一个 arm-elf-gcc 交叉编译器。

所以我首先安装了带有以下配置选项的 binutils 2.18:

./configure --target=arm-elf --enable-interwork --enable-multilib

这似乎工作正常。

接下来我安装了gmp、mpfr和libmpc

现在到 gcc 本身。

//edit - 删除之前的错误并更新为当前错误(我尝试单独构建所有内容)

首先,我使用以下配置选项安装引导 gcc:

--target=arm-elf --disable-libssp --with-newlib --without-headers --with-gnu-as --with-gnu-ld

然后我尝试用它构建 newlib 1.17.0

--target=arm-elf --disable-werror --disable-newlib-supplied-syscalls --disable-nls --with-gnu-as --with-gnu-ld

但这仍然会导致相同的错误。也许 newlib 尝试使用苹果 gcc 为 x86 架构构建(我在 OS X 上运行这些东西)可能不理解这些参数?

    cc1: error: unrecognized command line option "-msse4"
../../../../../../newlib/libc/argz/dummy.c:1: error: bad value (core2) for -march= switch
cc1: error: unrecognized command line option "-msse4"
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag!
../../../../../../newlib/libc/argz/argz_add.c:1: error: bad value (core2) for -march= switch
cc1: error: unrecognized command line option "-msse4"
../../../../../../newlib/libc/argz/argz_add_sep.c:1: error: bad value (core2) for -march= switch
cc1: error: unrecognized command line option "-msse4"
make[8]: *** [lib_a-argz_add.o] Error 1
make[8]: *** Waiting for unfinished jobs....
../../../../../../newlib/libc/argz/argz_append.c:1: error: bad value (core2) for -march= switch
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag!
cc1: error: unrecognized command line option "-msse4"
../../../../../../newlib/libc/argz/argz_create.c:1: error: bad value (core2) for -march= switch
cc1: error: unrecognized command line option "-msse4"
../../../../../../newlib/libc/argz/argz_count.c:1: error: bad value (core2) for -march= switch
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag!
cc1: error: unrecognized command line option "-msse4"
../../../../../../newlib/libc/argz/argz_delete.c:1: error: bad value (core2) for -march= switch
make[8]: *** [lib_a-dummy.o] Error 1
make[8]: *** [lib_a-argz_create.o] Error 1
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag!
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag!
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag!
make[8]: *** [lib_a-argz_add_sep.o] Error 1
make[8]: *** [lib_a-argz_delete.o] Error 1
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag!
make[8]: *** [lib_a-argz_count.o] Error 1
make[8]: *** [lib_a-argz_append.o] Error 1
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag!
cc1: error: unrecognized command line option "-msse4"
../../../../../../newlib/libc/argz/argz_create_sep.c:1: error: bad value (core2) for -march= switch
make[8]: *** [lib_a-argz_create_sep.o] Error 1
make[7]: *** [all-recursive] Error 1
make[6]: *** [all-recursive] Error 1
make[5]: *** [all] Error 2
make[4]: *** [multi-do] Error 1
make[3]: *** [all-multi] Error 2
make[2]: *** [all] Error 2
make[1]: *** [all-target-newlib] Error 2
make: *** [all] Error 2

【问题讨论】:

  • config.log 会尝试告诉你。请发布相关片段(通常很大)。

标签: gcc makefile arm cross-compiling


【解决方案1】:

并非所有 binutils、gcc 和 newlib 的组合都有效。我很久以前就放弃了亲自尝试寻找任何组合。上次我成功是在 gcc 3.x 时代,你不能用 gcc 4.x 交叉编译 gcc 3.x,或者至少它变得越来越难。

也许可以尝试不使用互通和 multilib,直到您可以直臂工作。也许你需要某种形式的 eabi,比如 arm-non-eabi 之类的?

这是一个可以工作的 gcc 和 libgcc 的组合

http://www.cowlark.com/2009-07-04-building-gcc/

代码源应该有他们的构建信息来弄清楚如何,至少可以达到 binutils 和 gcc。

不知何故,你在那里得到了一个 core2 架构,但我没有看到任何明显的东西。

【讨论】:

  • 查看我更新的帖子,我尝试仅使用最少的选项进行构建,但在构建 newlib 时仍然出现错误。
【解决方案2】:

是的,这是一篇旧帖子,但我在寻找答案时发现了它。 现在我找到了答案,所以我会在这里发布。

仔细查看“as”——实际执行的是 as,您的 as 是针对主机还是针对目标架构?

答案是:针对目标架构。

当您在 Mac 上构建时会发生这种情况 - 无论是在 PowerPC 上还是在英特尔上。 您应该在构建 binutils 后立即设置 PATH 环境变量,以便找到正确的 binutils,否则您的本机 x86(或 PowerPC)工具将用于构建您的 ARM 目标。那是行不通的。

【讨论】:

  • 如何在构建过程中设置 PATH 环境?你破解 Makefile 吗?谢谢。我正在尝试在运行英特尔的 Mac 笔记本电脑上构建 android 源代码,但我得到了相同的“我不理解 'm' 选项”。
  • 不,你不会破解 Makefile。 - 在您的 binutils 构建和安装完成后(例如 make && sudo make install),您运行 export PATH="/usr/local/arm-none-eabi/bin:$PATH"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 2018-07-26
  • 1970-01-01
  • 2021-07-11
  • 2020-07-16
相关资源
最近更新 更多