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