Wie kann ich kompilieren, ohne dass Warnungen als Fehler behandelt werden?

Lesezeit: 1 Minute

Benutzeravatar von Saurabh Verma
Saurab Verma

Das Problem ist, dass derselbe Code, der unter Windows gut kompiliert wird, nicht kompiliert werden kann Ubuntu. Jedes Mal bekomme ich diesen Fehler:

cc1: Warnungen werden als Fehler behandelt

Nun, es ist eine große Codebasis und ich mag es nicht, alle Warnungen zu beheben.

Gibt es eine Möglichkeit, trotz der Warnungen erfolgreich zu kompilieren?

  • Ich empfehle dringend, die Warnungen zu beheben. Wenn nicht sofort, dann nach und nach. Sobald Sie loswerden -Werrorkönnen Sie es für einzelne Verzeichnisse wieder hinzufügen, nachdem Sie Warnungen entfernt haben.

    – ugoren

    19. Juli 2012 um 13:04 Uhr

  • Selbst wenn Sie erfolgreich kompilieren, wird es möglicherweise nicht so ausgeführt, wie Sie es erwarten. Ich habe einige Leute Code schreiben lassen, der unter Windows einwandfrei funktioniert, aber unter Linux sofort abstürzt.

    – Dennis Meng

    19. Juli 2012 um 16:39 Uhr

  • Vielen Dank an alle für ihre nützlichen Kommentare und Antworten. Gemäß der Anforderung muss ich anscheinend alle Warnungen beheben, die ich gestartet habe. Aber jetzt kommt die Warnung, die ich bekomme, von sqlite3.c: Unter der Annahme, dass (X – c) <= X immer wahr ist, tritt kein signierter Überlauf auf

    – Saurabh Verma

    20. Juli 2012 um 7:22 Uhr


Benutzeravatar von Daniel Fischer
Daniel Fischer

Sicher, finde wo -Fehler gesetzt ist und dieses Flag entfernen. Dann sind Warnungen nur noch Warnungen.

  • Danke Daniel, aber in meinem Projekt ist kein -Werror-Flag gesetzt. Soll ich woanders danach suchen?

    – Saurabh Verma

    19. Juli 2012 um 12:53 Uhr

  • Irgendwo muss es gesetzt werden, standardmäßig werden Warnungen von keinem mir bekannten Compiler als Fehler behandelt. Wenn Sie es nicht finden können, können Sie versuchen, es mit zu überschreiben -Wno-error, wie Nightcracker vorgeschlagen hat. Das sollte funktionieren, es sei denn, die -Werror wird nach den von Ihnen gesetzten Flags übergeben CFLAGS im Makefile.

    – Daniel Fischer

    19. Juli 2012 um 12:59 Uhr

Benutzeravatar von orlp
Orlp

Mit können Sie alle Warnungen als solche behandeln lassen -Wno-Fehler. Sie können festlegen, dass bestimmte Warnungen als solche behandelt werden, indem Sie verwenden -Wno-error=<warning name> wo <warning name> ist der Name der Warnung, die nicht als Fehler behandelt werden soll.

Wenn Sie ganz wollen deaktivieren alle Warnungen verwenden -w (nicht empfohlen).


Quelle: 3.8 Optionen zum Anfordern oder Unterdrücken von Warnungen

Lösung:

CFLAGS=-Wno-error ./configure

Benutzeravatar von Andrea Araldo
Andrea Araldo

Entfernen -Fehler aus Ihren Make- oder CMake-Dateien, wie in diesem Beitrag vorgeschlagen.

Benutzeravatar von Marlab
Marlab

Das -Wand und -Fehler Compileroptionen können dies verursachen. Bitte überprüfen Sie, ob diese in den Compiler-Einstellungen verwendet werden.

Benutzeravatar von Peter Mortensen
Peter Mortensen

Wenn Sie den Linux-Kernel kompilieren:

Wenn Sie beispielsweise die Warnung deaktivieren möchten, wird “unused-but-set-variable” als Fehler behandelt. Sie können eine Aussage hinzufügen:

KBUILD_CFLAGS += $(call cc-option,-Wno-error=unused-but-set-variable,)

in deinem Makefile.

Benutzeravatar von Peter Mortensen
Peter Mortensen

Danke für all die hilfreichen Vorschläge. Ich habe schließlich sichergestellt, dass es keine Warnungen in meinem Code gibt, aber ich bekomme diese Warnung wieder SQLite 3:

Die Annahme eines vorzeichenbehafteten Überlaufs tritt nicht auf, wenn angenommen wird, dass (X – c) <= X immer wahr ist

was ich behoben habe, indem ich die hinzugefügt habe CFLAG -fno-strenger-Überlauf.

  • Viele Warnungen weisen Sie auf problematische Konstrukte in Ihrem Code hin. Wenn Sie sie deaktivieren, können Sie kurzfristig weitermachen, aber Sie werden nie wissen, ob diese Probleme Sie auf lange Sicht verfolgen werden.

    – Benjamin Bannier

    20. Juli 2012 um 11:00 Uhr

  • Ja, du hast recht. Ich hatte gemeint, dass ich sichergestellt habe, dass mein Code warnungsfrei ist (ich habe nicht alle Warnungen deaktiviert).

    – Saurabh Verma

    20. Juli 2012 um 14:26 Uhr

1422540cookie-checkWie kann ich kompilieren, ohne dass Warnungen als Fehler behandelt werden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy