build error: No rule to make target crtendS.o

Wesley Miaw wesley at
Fri Sep 9 22:09:09 CEST 2011

Hi Adam,

>> % arm-none-eabi-gcc --version
>> arm-none-eabi-gcc (Linaro GCC 4.5-2011.02-0) 4.5.2
>> make[8]: *** No rule to make target
`/opt/armgcc/lib/gcc/arm-none-eabi/4.5.2//crtendS.o', needed by
`'.  Stop.
> Please use the arm-none-linux-gnueabi version of gcc. Looks like we
> might not need to link crtendS.o at least with 4.5 but I'm not sure
> currently for other versions.

I'm having trouble understanding how the bootstrap images are supposed to
be run on an ARM board if they are compiled with arm-none-linux-gnueabi
instead of arm-none-eabi. Reading the Sourcery G++ Lite documentation, and
talking to ARM support, bare metal should be compiled using arm-none-eabi.

I am able to compile a hello world application for execution off the
Versatile Express Boot Monitor using arm-none-eabi but not when using
arm-none-linux-gnueabi (too many headers error). I saw in the bootstrap
linker script that the data and bss sections are combined to fix this
problem. But when I try to run one of the E=hello bootstrap images (ELF or
RAW) I get garbage printed out. With arm-none-eabi I have to specify a
'hosted' linker script to get it to output text.

Fiasco.OC's Features web page states it supports the Versatile Express
board. I'm unable to find any documentation on it though.

At this point, would I need to modify the build to use arm-none-eabi and
the Makeconf.local to use the correct arm-none-eabi linker script and
build option (e.g. -mcpu=cortex-a9)?

Wesley Miaw
wesley at

More information about the l4-hackers mailing list