Das Linken der Libraries funktioniert jetzt. Neben der Auswahl der korrekten libc und libgcc mit Soft Float und war der zum Compilieren der Anwedung passende Schalter -mfloat-abi=soft bzw. -msoft-float das Zauberwort weil dies bei GCC offensichtlich kein default ist.

@panzi: das Zielsystem ist kein Linux sondern hat gar nichts drauf. GCC wird also als Crosscompiler genutzt und es gibt kein Filesystem weshalb ich gar nicht auf die Idee gekommen im Verzeichnis /dev nach einer passenden tty zu suchen. Im Endeffekt möchte ich eben die formatierte Ausgabe mit printf nutzen und deshalb war Idee dem Compiler ein eigenes putchar unterzuschieben was weis wie auf die (zuvor initialisierte) Schnittstelle (oder LCD Display) ein Zeichen geschrieben wird.

Momentan sieht es so aus, dass printf das selbst geschriebene putchar leider nicht aufruft, sondern stattdessen in der Lib bei _isatty auf einen Software Breakpoint Befehl aufläuft. Woher soll die Lib auch wissen, wie tty auf diesem System angesprochen wird?

Ein anderer Lösungsansatz wäre wohl sprintf um den Speicher dann mit einer ganz anderen selbstgemachten Funktion an die HW rauszuschreiben. Das mit dem übersetzen einer eigenen Lib scheint wohl eine größere Sache. Wenn ich das richtig verstanden habe, enthält libgcc den Teil der Laufzeitbibliothke welcher unbedingt mit der gleichen Version des GCC übersetzt werden muss, während libc auch mit älteren GCC übersetzt sein darf.