如何禁用-Werror = date-time / macro“ __DATE__”可能会阻止可复制的构建


13

我正在尝试为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

2
date-time我认为该警告是gcc 4.9中的新增内容-可能由隐式-Wall 打开(并由隐式变为错误-Werror)。你可以尝试把它关闭明确使用的-Wno-形式,即-Wno-error=date-time加入CFLAGS,但我猜,不能对其进行测试。
— 钢铁司机

@steeldriver是的,行得通,谢谢!欢迎您提交它作为答案,我会接受。问题的另一部分是我没有意识到安装脚本每次都在重新提取源代码并覆盖我对Makefile所做的更改。
— 安迪

Answers:


14

我认为日期时间警告是gcc 4.9中的新增功能-它可能由隐式-Wall打开(并由隐式变为错误-Werror)。

您可以尝试使用-Wno-表单显式关闭它,即通过添加

-Wno-error=date-time 

到CFLAGS。


具体来说,执行此操作需要输入什么内容?
— Hack-R

1
嗨@steeldriver这是正确的语法吗?CFLAGS + =“ -Wno-error = date-time”
— Nayab Basha说

3

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

到目前为止,最简单的解决方案是通过执行以下命令来查找产生“ __DATE__”行的文件

grep -r "__DATE__"

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

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

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

"Compiled on __DATE__ for kernel %s"

这样编译就可以继续了

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


1

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

须藤打扫
— 卫生
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.