Warum sind z.B. Headerfiles nicht kompatibel? Weil es dort Deklarationen gibt, die in systemspezifischen Bilbliotheken definiert sind?
Die Verwendeten Bibliotheken müssen natürlich da sein; aber es gibt da noch Compiler-spezifische Erweiterung wie zum Beispiel Pragmas und einige Attribute.
Zusätzlich ist zum Beispiel der Microsoft-Compiler sehr gutmütig mit einigen nicht-Standard-konformen Konstrukten ... da macht Portieren dann Spaß