Problem polega na tym, że ten sam kod, który dobrze kompiluje się w systemie Windows, nie jest w stanie skompilować się na Ubuntu. Za każdym razem, gdy otrzymuję ten błąd:
cc1: warnings being treated as errors
Teraz jest to duża baza kodu i nie lubię naprawiać wszystkich ostrzeżeń.
Czy jest jakiś sposób na pomyślną kompilację pomimo ostrzeżeń?
c
gcc
compiler-warnings
Saurabh Verma
źródło
źródło
-Werror
, możesz dodać go ponownie dla poszczególnych katalogów, po usunięciu ostrzeżeń.Odpowiedzi:
Jasne, sprawdź, gdzie
-Werror
jest ustawione i usuń tę flagę. Wtedy ostrzeżenia będą tylko ostrzeżeniami.źródło
-Wno-error
zastąpić go , jak zasugerował Nightcracker. Powinno to zadziałać, chyba że-Werror
zostanie przekazana po flagach, które ustawiłeś wCFLAGS
pliku makefile.Wszystkie ostrzeżenia można traktować jako takie, używając
-Wno-error
. Możesz traktować określone ostrzeżenia jako takie, używając-Wno-error=<warning name>
gdzie<warning name>
jest nazwą ostrzeżenia, którego nie chcesz traktować jako błąd.Jeśli chcesz całkowicie wyłączyć wszystkie ostrzeżenia, użyj
-w
(niezalecane).Źródło: http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html
źródło
Usuń
-Werror
z plików Make lub CMake, zgodnie z sugestią w tym pościeźródło
Rozwiązanie:
źródło
Jeśli kompilujesz jądro Linuksa. Na przykład, jeśli chcesz wyłączyć ostrzeżenie, że „nieużywana-ale-ustawiona-zmienna” jest traktowane jako błąd. Możesz dodać oświadczenie:
KBUILD_CFLAGS += $(call cc-option,-Wno-error=unused-but-set-variable,)
w twoim Makefile
źródło
Dzięki za wszystkie pomocne sugestie. W końcu upewniłem się, że w moim kodzie nie ma żadnych ostrzeżeń, ale znowu otrzymałem to ostrzeżenie od sqlite3:
Assuming signed overflow does not occur when assuming that (X - c) <= X is always true
które naprawiłem, dodając następujący CFLAG:
źródło
-Wall
i-Werror
opcje kompilatora mogą to powodować, sprawdź, czy są one używane w ustawieniach kompilatora.źródło