Linux 2.6.36.4、GCC 4.7.2、多数の「変数が設定されているが使用されていません」警告を受け取る

Linux 2.6.36.4、GCC 4.7.2、多数の「変数が設定されているが使用されていません」警告を受け取る

デフォルトでは、3.5カーネルを実行しているLinux Mint 14でLinuxカーネル2.6.36.4をコンパイルしようとしています。 gccバージョン4.7.2を使用してください。インターネットを検索しようとしましたが、成功しませんでした。警告は次のとおりです。

warning: variable ‘gfp’ set but not used [-Wunused-but-set-variable]

編集を通して、これらの警告は非常にたくさんあります。コンパイルはどこでも失敗しません。最悪の部分は、コンパイルされたカーネルも正常に起動しないことです。

設定する必要があるgccオプションはありますか?それとも無視すべきですか?

注:私はvirtualboxで開発中です。ストックカーネルはうまく動作します。

ベストアンサー1

「変数は設定されていますが使用されていません」という警告は、情報提供の目的でのみ使用されます。

~によると公式文書-Wunused-but-set-variable次の動作を制御します。

ローカル変数が割り当てられているが使用されないたびに(宣言を除く)警告が発生します。この警告はによって有効になります-Wall

目的は、プログラマが変数に値を割り当ててから何もしない状況をキャッチすることです。カーネルはやや特別です。これは、低レベルのオペレーティングシステムプログラミングの深淵でこれを行うことが完全に合法的であるか、さらには私でさえ想像できるからです。必要希望の結果を得てください。

変数割り当てステートメントが実際に必要でない場合、コンパイラはこれを最適化できます。

結論は、開発者ではない限り、これらの警告を無視しても安全であるということです。開発者の場合は、割り当てが必要かどうかを検討する必要があります。 GCC以外のコンパイラへの移植性が優先順位ではない場合は、__attribute__((unused))変数に関する警告を表示しないように宣言に追加することを検討してください。変数属性

おすすめ記事