Wie kann ich kompilieren, ohne dass Warnungen als Fehler behandelt werden?
Lesezeit: 1 Minute
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
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
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).
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
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
14225400cookie-checkWie kann ich kompilieren, ohne dass Warnungen als Fehler behandelt werden?yes
Ich empfehle dringend, die Warnungen zu beheben. Wenn nicht sofort, dann nach und nach. Sobald Sie loswerden
-Werror
kö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