[Buildroot] 'ld' gives "unrecognised emulation mode" - ARM toolchain unbuildable ??

Michael K. Edwards medwards.linux at gmail.com
Tue Nov 21 20:08:39 UTC 2006


You probably want to stick to armelf(b)-linux-eabi, since that's
clearly the right thing in later toolchains.  EABI on ARM seems to be
better supported in an up-to-date toolchain combination consisting of
gcc 4.1.1, binutils 2.17.50.0.6, and headers from glibc 2.5 and kernel
2.6.16 or later.  I used crosstool to build a glibc toolchain first,
and am currently grinding through compiling a full glibc/NPTL
userspace with ptxdist, cleaning up all the non-uClibc-specific
issues.  Once I have the kinks worked out of that, I'll be trying a
uClibc version; I'll keep the list posted.

As of gcc 4.1.1, it seems that one still needs this patch to fix up
some include issues:
http://www.kegel.com/crosstool/crosstool-0.42/contrib/2006/crosstool-0.38-add-gcc-4.1-20060210.diff

Also, if your target is big-endian, you need the one-line patch below
so that big-endian is really big-endian.

Cheers,
- Michael

--- gcc-4.1.0/gcc/config/arm/linux-eabi.h       2005-11-15
06:32:13.000000000 -0800
+++ gcc-4.1.0-patched/gcc/config/arm/linux-eabi.h       2006-04-26
22:13:14.000000000 -0700
@@ -48,7 +48,8 @@
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi

 #undef SUBTARGET_EXTRA_LINK_SPEC
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
+#define SUBTARGET_EXTRA_LINK_SPEC \
+  " %{mbig-endian:-m armelfb_linux_eabi} %{mlittle-endian:-m
armelf_linux_eabi} "

 /* Use ld-linux.so.3 so that it will be possible to run "classic"
    GNU/Linux binaries on an EABI system.  */



More information about the buildroot mailing list