如何禁用-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 

日期时间警告是gcc 4.9中的新function。我认为 – 它可能由-Wall隐式-Werror (并由-Werror隐式转换为错误)。

您可以尝试使用-Wno- form明确地将其关闭,即添加

 -Wno-error=date-time 

CFLAGS

我尝试了几次将“Wno-error = date-time”行添加到CFLAGS,但它似乎没有用。

到目前为止,最简单的解决方案是通过执行找到生成“__DATE__”行的文件

 grep -r "__DATE__" 

(对于我正在使用的源代码)给了我这个文件

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

我只是通过删除引号将其更改为没有变量的字符串,即

 "Compiled on __DATE__ for kernel %s" 

然后编译就可以继续了

编辑:如前所述,在运行configure之前使用make clean并制作,甚至更好地从zip / tar文件中提取新版本

通过从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