The real answer is that it should compile crti.o
if one was to build an arm-elf target. In building an arm-linux target, the gcc people reasonably assume that glibc has been compiled previously and it will provide the crti.o
startup. Perfectly reasonable, if you're upgrading.
Building a new root file system is another story, a paradoxical one at that (which comes first glibc or gcc?). An approach (endorsed, but I've not yet succeeded with) is to build a stand-alone gcc (arm-elf\static, say) then glibc, then gcc again.
It seems as though some have addressed the missing crti.o
in an arm-linux target by modfiying gcc\config\arm\t-linux
. Rather than relying on an unexisting glibc, the kludge is to use the arm-elf provided version of the crti.o
. Some sets of examples are here, here and here. Also here.