Как отключить -Werror = дата-время / макрос «__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 да, это сработало, спасибо! Вы можете отправить его как ответ, и я приму его. Другая часть проблемы состояла в том, что я не осознавал, что установочный скрипт каждый раз заново извлекал исходный код и переписывал изменения, которые я вносил в make-файл.
Энди

Ответы:

14

Я думаю, что предупреждение о дате и времени появилось в gcc 4.9 - возможно, оно неявным образом -Wallвключено (и неявно включено -Werror).

Вы можете попробовать отключить его явно, используя -Wno-форму, т.е. добавив

-Wno-error=date-time 

к CFLAGS.

steeldriver
источник
Что конкретно нужно для этого ввести в терминал?
Hack-R
1
Привет @steeldriver Это правильный синтаксис: CFLAGS + = "-Wno-error = дата-время"
Nayab Basha Sayed
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 и сделайте, или, что еще лучше, извлеките свежую версию из файла zip / tar

tmck-код
источник
1

Возможно, лучше удалить нарушающий макрос, удалив строку 66 из файла rtw_debug.c.

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
mchid
источник
sudo сделать чистым важно
Mchid