Frage

Der kleine Geräte-C-Compiler (SDCC) erzeugt eine IHX-Datei (Intel-Hex), auch wenn während des Verbindungsschritts undefinierte Referenzfehler vorhanden sind. Dieses Verhalten verursacht Probleme bei der Verwendung von SDCC in einem Makefile, denn wenn Sie die IHX-Datei so einstellen, dass Sie das Ziel haben, ist es nicht möglich, zu wissen, dass ein bisheriger Versuch, dass ein früherer Versuchsversuch fehlgeschlagen ist.

Gibt es eine Möglichkeit, SDCC zu sagen, um den IHX-Ausgang zu unterdrücken, wenn während der Verknüpfung eine nicht definierte Referenz vorliegt? Wenn nicht, was ist die beste Problemumgehung? (ich dachte schon an einen).

Ich interessiere mich auch an warum sdcc auf diese Weise entworfen wurde, wenn jemand weiß.

Hier ist ein Beispiel für das Problem:

Sie haben eine Datei namens test.c, die eine undefinierte Funktion aufruft:

generasacodicetagpre.

Sie haben ein einfaches Makefile für den Aufbau eines Tests.IHX von test.c:

generasacodicetagpre.

Sie versuchen, Test.c zum ersten Mal zu kompilieren, und es fehlschlägt:

generasacodicetagpre.

Sie versuchen, das Problem zu beheben, indem Sie etwas ändern, das keine Abhängigkeit des IHX (z. B. der Makefile) ist, und versuchen Sie erneut zu kompilieren:

generasacodicetagpre.

muss jedoch nicht versuchen, es zu kompilieren, da SDCC bereits die IHX-Datei erstellt hat.

War es hilfreich?

Lösung

Ich weiß nichts über SDCC, also tut es mir leid, dass ich Ihre Fragen dazu nicht beantworten kann, ob die Ausgabe unterdrückt werden kann oder warum SDCC so entworfen wurde.

Ich kann an ein Work-Around denken: Benennen Sie die IHX-Datei nach einem erfolgreichen Build um und verwenden Sie den neuen Namen als Ziel-Ziel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top