Як відключити -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

@steeldriver так, це спрацювало, дякую! Ви можете надіслати його як відповідь, і я прийму його. Інша частина проблеми полягала в тому, що я не розумів, що сценарій встановлення кожного разу повторно витягує джерело і перезаписує зміни, внесені в makefile.
Енді

Відповіді:


14

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

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

-Wno-error=date-time 

до CFLAGS.


Що конкретно для цього потрібно набрати в термінал?
Hack-R

1
Привіт @steeldriver Це правильний синтаксис: CFLAGS + = "-Wno-error = date-time"
Наяб Баша сказав

3

Я кілька разів намагався додавати до CFLAGS рядок "Wno-помилка = дата-час", але, схоже, це не спрацювало.

На сьогодні найпростішим рішенням для мене було знайти файл, який створює рядок "__DATE__" шляхом виконання

grep -r "__DATE__"

який (для вихідного коду, з яким я працюю) дав мені файл

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

Я просто змінив це на рядок без змінної, видаливши лапки, тобто

"Compiled on __DATE__ for kernel %s"

Потім компіляцію вдалося продовжити

EDIT: Як було сказано раніше, make cleanперед запуском конфігуруйте та зробіть, а ще краще, витягніть свіжу версію з файлу zip / tar


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.