web-dev-qa-db-ja.com

警告をエラーとして扱わずにコンパイルする方法は?

問題は、Windowsで適切にコンパイルされる同じコードがUbuntuでコンパイルできないことです。このエラーが発生するたびに:

cc1: warnings being treated as errors

今、それは大きなコードベースであり、すべての警告を修正するのは好きではありません。

警告にもかかわらず、正常にコンパイルできる方法はありますか?

74
Saurabh Verma

すべての有用な提案をありがとう。私は最終的に私のコードに警告がないことを確認しましたが、再びこの警告をsqlite3から受け取っていました:

Assuming signed overflow does not occur when assuming that (X - c) <= X is always true

次のCFLAGを追加して修正しました。

-fno-strict-overflow
2
Saurabh Verma

確かに、-Werrorが設定されている場所を見つけて、そのフラグを削除します。その場合、警告は警告のみになります。

66
Daniel Fischer

-Wno-errorを使用して、すべての警告をそのように扱うことができます。 -Wno-error=<warning name>を使用して、特定の警告をそのように扱うことができます。ここで、<warning name>は、エラーとして扱いたくない警告の名前です。

すべての警告を完全にdisableにする場合は、-wを使用します(推奨されません)。


ソース: http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html

26
orlp

推奨されるように、MakeまたはCMakeファイルから-Werrorを削除します この投稿

5
Andrea Araldo

Linuxカーネルをコンパイルしている場合。たとえば、「unused-but-set-variable」という警告を無効にする場合は、エラーとして扱われます。次のステートメントを追加できます。

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

makefileで

4
Andy Zhang

-Wallおよび-Werrorコンパイラオプションが原因である可能性があります。コンパイラ設定で使用されているかどうかを確認してください。

1
Marlab