构建arm-elf-gcc时出错

时间:2010-08-27 10:32:58

标签: gcc makefile arm cross-compiling

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

所以我用以下配置选项安装了binutils 2.18:

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

这似乎工作正常。

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

现在对gcc本身。

//编辑 - 删除了以前的错误并使用当前错误进行了更新(我试图单独构建所有内容)

首先,我使用以下配置选项安装bootstrap 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尝试使用apple 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

2 个答案:

答案 0 :(得分:1)

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

也许在没有互通和多笨蛋的情况下尝试直到你的直臂工作。也许你需要一些eabi在某种形式的arm-non-eabi,就像那样?

这是一个组合,可以获得有效的gcc和libgcc

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

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

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

答案 1 :(得分:0)

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

仔细查看“as” - 实际执行的是你的主机或目标架构?

答案是:目标架构。

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