Wie kann ich Fehler bei Warnung deaktivieren, wenn ich GCC und Make verwende?
Lesezeit: 5 Minuten
Dr Watson
Ich versuche, GCC für die Verwendung mit einem zu erstellen AVR Mikrocontroller und avr-ada, und ich bin auf eine Straßensperre gestoßen, die dadurch verursacht wurde, dass mein regulärer Compiler zu wählerisch in Bezug auf die Version war, die ich für den AVR benötigte. Ich erhalte die folgende Warnung, die wiederum dazu führt, dass GCC oder Make einen Fehler melden:
Gibt es eine Möglichkeit, GCC oder Make anzuweisen, bei Warnungen nicht zu scheitern?
Ich glaube nicht, dass eine der Debug-Optionen dazu führt, dass Warnungen als Fehler behandelt werden (zumindest nicht, die ich finden konnte), ist das die vollständige Ausgabe?
– Tim Post
10. März 2010 um 3:15 Uhr
Normalerweise (wenn nicht verwendet -gnatg um alle für einen Compiler-Build erforderlichen Prüfungen anzuwenden), verwendet GNAT (Ada in GCC). -gnatwe Warnungen als Fehler zu behandeln und -gnatwn das abzubrechen
– Simon Wright
23. Oktober um 15:58 Uhr
Versuchen make -k statt nur make. Das wird „weitergehen“, anstatt aufzuhören.
Jack
Als Alternative zum Eintauchen in das Build-System versuchen Sie es mit Setting -Wno-error in CFLAGS, was Sie über die Umgebung tun können sollten (oder zur Konfigurationszeit, wenn Sie das GNU-Build-System verwenden).
Simon Wright
Der Auslöser hier ist das -gnatpg (eigentlich das -gnatg): Dies ist der “GNAT-Implementierungsmodus (der zum Kompilieren von GNAT-Einheiten verwendet wird)”. -gnatp bedeutet “alle Prüfungen unterdrücken”.
Ich bin mir der vollen Wirkung von -gnatg nicht sicher, obwohl es sicherlich dazu führt, dass Warnungen als Fehler behandelt werden — wie -Werror — jedenfalls beim Erstellen des Compilers selbst; Ich glaube, ich erinnere mich, dass ich beim Erstellen des RTS nicht schwerwiegende Warnungen gesehen habe.
Eine Möglichkeit wäre, einfach exp_ch5.adb ohne -gnatg von Hand zu kompilieren; Der Befehl, den Sie auflisten, wurde auf gcc/ ausgegeben, also
Dies ist ein Cross-Compiler, sodass Sie dies (hoffentlich!) nicht für alle drei Phasen eines vollständigen Builds wiederholen müssen.
Vielen Dank, Ihre Lösung hat es mir ermöglicht, den obigen Fehler zu umgehen. Ich habe noch mehr Warnungen vom Ada-Compiler, aber ich werde jetzt weitermachen!
Es scheint die -Fehler Flag ist im Makefile gesetzt. Vielleicht können Sie im Makefile nach den CFLAGS-Optionen suchen und das Flag -Werror entfernen. Das Werror-Flag macht alle Warnungen zu Fehlern.
espz
Im Allgemeinen ist es keine gute Idee, Warnungen Ihres Compilers zu ignorieren. Wenn dies jedoch ein Teil eines größeren Herstellungsprozesses ist, gibt es wahrscheinlich eine -Werror Flag, das früher in der Sequenz eingefügt wurde. Beginnen Sie damit, danach zu suchen.
Nachdem ich mich umgesehen habe, scheint es eine Fülle von Flags zu geben, um Warnungen beim Kompilieren von Ada-Code zu steuern. Zum Beispiel, -gnatwF Wille Warnungen bei nicht referenzierten Formalen unterdrücken entsprechend diese Anleitung. Eventuell finden Sie den von Ihnen benötigten Schalter in der dort bereitgestellten Liste.
Ja, nichts in dem, was er eingefügt hat, hätte dazu geführt, dass -Werror aktiviert wurde. Es musste vor dem Auszug sein.
– Tim Post
10. März 2010 um 3:49 Uhr
Ich weiß, dass das keine gute Idee ist, und ich habe versucht, eine ältere Version von gcc/gnat (gcc-4.3.2) zu bauen, nur damit ich den AVR gcc/gnat (ebenfalls gcc-4.3.2) bauen konnte, aber ich lief dort auch genau das gleiche Problem. Nachdem er mit dem Projektbesitzer gesprochen hatte, sagte er mir, dass mein System-Ada-Compiler (gcc-4.3.4) für die Codebasis “zu neu riecht”, und meine Optionen waren, den Quellcode zu hacken oder zu versuchen, den Fehler oder die Warnung zu überschreiben.
– Dr. Watson
10. März 2010 um 14:01 Uhr
Nun, ich erinnere mich, dass ich kurz mit Ada zu tun hatte, und für mich müsste der Ansatz darin bestehen, den Build zu erweitern. Soweit ich mich erinnere, ist Ada ziemlich pingelig in Sachen.
– ezpz
10. März 2010 um 14:52 Uhr
Auch hier stimme ich dem zu, was Sie sagen. Ich werde einige der Optionen, die Sie aufgelistet haben, sowie andere in diesem Thread ausprobieren, wenn ich heute nach Hause komme, aber ich lerne, nur die Windows-Version zu verwenden, da ich leicht eine Binärdatei bekommen und mich an die Arbeit machen kann.
– Dr. Watson
10. März 2010 um 15:19 Uhr
Bob Blogge
In gcc configure können Sie hinzufügen --disable-werror.
Es ist jedoch ratsam, zuerst nach einem geeigneten Patch zu suchen.
Ja, nichts in dem, was er eingefügt hat, hätte dazu geführt, dass -Werror aktiviert wurde. Es musste vor dem Auszug sein.
– Tim Post
10. März 2010 um 3:49 Uhr
Ich weiß, dass das keine gute Idee ist, und ich habe versucht, eine ältere Version von gcc/gnat (gcc-4.3.2) zu bauen, nur damit ich den AVR gcc/gnat (ebenfalls gcc-4.3.2) bauen konnte, aber ich lief dort auch genau das gleiche Problem. Nachdem er mit dem Projektbesitzer gesprochen hatte, sagte er mir, dass mein System-Ada-Compiler (gcc-4.3.4) für die Codebasis “zu neu riecht”, und meine Optionen waren, den Quellcode zu hacken oder zu versuchen, den Fehler oder die Warnung zu überschreiben.
– Dr. Watson
10. März 2010 um 14:01 Uhr
Nun, ich erinnere mich, dass ich kurz mit Ada zu tun hatte, und für mich müsste der Ansatz darin bestehen, den Build zu erweitern. Soweit ich mich erinnere, ist Ada ziemlich pingelig in Sachen.
– ezpz
10. März 2010 um 14:52 Uhr
Auch hier stimme ich dem zu, was Sie sagen. Ich werde einige der Optionen, die Sie aufgelistet haben, sowie andere in diesem Thread ausprobieren, wenn ich heute nach Hause komme, aber ich lerne, nur die Windows-Version zu verwenden, da ich leicht eine Binärdatei bekommen und mich an die Arbeit machen kann.
– Dr. Watson
10. März 2010 um 15:19 Uhr
Peter Mortensen
Fügen Sie „Pragma warnings(off, „…“)“ in die anstößigen Teile Ihres Codes ein.
Ich glaube nicht, dass eine der Debug-Optionen dazu führt, dass Warnungen als Fehler behandelt werden (zumindest nicht, die ich finden konnte), ist das die vollständige Ausgabe?
– Tim Post
10. März 2010 um 3:15 Uhr
Normalerweise (wenn nicht verwendet
-gnatg
um alle für einen Compiler-Build erforderlichen Prüfungen anzuwenden), verwendet GNAT (Ada in GCC).-gnatwe
Warnungen als Fehler zu behandeln und-gnatwn
das abzubrechen– Simon Wright
23. Oktober um 15:58 Uhr