> Das Problem ist $(OBJS) $(USER_OBJS) $(LIBS). Das wird bei vielen Files
> so lang das Windows streikt.
Das kann passieren, wenn man viele Object-Files hat und die
Kommandozeile zu lange wird, etwa wenn lange Pfadnamen verwendet werden.
Eine Lösung ist, die Dateinamen in eine Textdatei <name> zu schreiben
und diese als @<name> zu übergeben.
gcc ist allerdings nur ein Treiber-Programm, und stellt auch selber
Kommandozeilen-Aufrufe zusammen und führt diese aus. Wenn man also
@<name> mit vielen C-Dateien hat, der Treiber @<name> auspackt und die
Objects an den Linker weiterreicht, kann es sein, dass die Kommandline
zu lange wird.
Ähnliches kann passieren, wenn man linken will und der Compilertreiber
Tools wie ld, collect2 oder (per Linker-Plugin) lto1 aufruft.
Der Treiber (in deinem Falle also arm-none-eabi-gcc, was kein Compiler
ist. Compiler ist cc1, cc1plus oder lto1) kann auch selbst @-Files
erstellen, allerdings macht er das nur dann, wenn GNU ld als Linker
verwendet wird und GCC dies beim Configure festgestellt hat. Dieser
Schritt funktioniert bei Cross-Compilern nicht immer problemlos, bzw.
configure kann die Tools nicht ausführen, weil für einen anderen Host
(bei Canadian-Cross Konfiguration) generiert wird.
Falls dies der Fall ist, kann man beim configure --with-gnu-ld angeben,
so dass das Treiberprogramm @-Dateien selbst erstellt.