web-dev-qa-db-ja.com

-Werror = date-time / macro "__DATE__"を無効にする方法は、再現可能なビルドを妨げる可能性があります

Netis WF2190アダプター用のドライバーをコンパイルしようとしています。はい、私はちょうどそれらから最新のものをダウンロードしました。

ビルドで-Werror=date-timeを無効にするにはどうすればよいですか?ビルドスクリプトのどこにも見つからないため、グローバルなデフォルト設定である必要があると考えています。明らかに、コードはビルドの日付/時刻を出力に埋め込もうとしているだけなので、この警告を無効にしても問題はないはずです。

エラーとして扱われている警告の一部を次に示します。

/home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/driver/rtl8812AU_linux_v4.3.8_12175.20140902/core/rtw_debug.c:66:1: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]
/home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/driver/rtl8812AU_linux_v4.3.8_12175.20140902/core/rtw_debug.c:66:1: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time]
cc1: some warnings being treated as errors
13
Andy

日時警告はgcc 4.9で新しく追加されました--Wallによって暗黙的にオンにされる可能性があります(-Werrorによって暗黙的にエラーになります)。

-Wno-フォームを使用して明示的にオフにすることができます。つまり、

-Wno-error=date-time 

CFLAGSに。

14
steeldriver

CFLAGSに「Wno-error = date-time」行を追加しようと何度も試みましたが、うまくいかないようでした。

私にとってこれまでで最も簡単な解決策は、実行して「__DATE__」行を生成していたファイルを見つけることでした

grep -r "__DATE__"

(私が作業しているソースコード用)ファイルを私に与えた

acore/info.patch:+          "Compiled on " __DATE__ " for kernel %s"

引用符を削除して、これを変数なしの文字列に変更しました。

"Compiled on __DATE__ for kernel %s"

その後、コンパイルを進めることができました

EDIT:前述のように、configureおよびmakeを実行する前にmake cleanを使用します。または、Zip/tarファイルから新しいバージョンを抽出します。

3
tmck-code

Rtw_debug.cファイルから行66を削除して、問題のあるマクロを削除した方がよい場合があります。

sed -i -e '66d' /home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/driver/rtl8812AU_linux_v4.3.8_12175.20140902/core/rtw_debug.c

これで、ビルドを続行できます。

cd /home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/
Sudo make clean
make
Sudo make install
1
mchid