Jak wyłączyć -Werror = data-czas / makro „__DATE__” może uniemożliwić powtarzalne kompilacje


13

Próbuję skompilować sterownik dla adaptera Netis WF2190. Tak, właśnie pobrałem najnowszą z nich.

Jak mogę wyłączyć -Werror=date-timekompilację? Nie mogę go nigdzie znaleźć w skrypcie kompilacji, więc uważam, że musi to być jakieś globalne ustawienie domyślne. Oczywiście kod po prostu próbuje osadzić datę / czas kompilacji w danych wyjściowych, więc nie powinno być problemu z wyłączeniem tego ostrzeżenia.

Oto niektóre otrzymywane przeze mnie ostrzeżenia, które są traktowane jako błędy:

/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-timeOstrzeżenie nowego w gcc 4.9 myślę - jest ewentualnie włączony niejawnie przez -Wall (i przekształcony błędu niejawnie przez -Werror). Możesz spróbować wyłączyć to jawnie, używając -Wno-formularza, tj. -Wno-error=date-timeDodanego do, CFLAGSale zgaduję i nie mogę go przetestować.
steeldriver,

@steeldriver tak, działało, dziękuję! Zachęcamy do przesłania go jako odpowiedzi, a ja go zaakceptuję. Inną częścią problemu było to, że nie zdawałem sobie sprawy, że skrypt instalacyjny za każdym razem wyodrębnia źródło i zastępuje zmiany, które wprowadziłem w pliku makefile.
Andy,

Odpowiedzi:


14

Ostrzeżenie o dacie i czasie jest nowością w gcc 4.9 - myślę, że może być domyślnie włączone przez -Wall(i zamienione w błąd niejawnie przez -Werror).

Możesz spróbować wyłączyć to jawnie, korzystając z -Wno-formularza, np. Dodając

-Wno-error=date-time 

do CFLAGS.


Co konkretnie trzeba wpisać w terminalu, aby to zrobić?
Hack-R

1
Cześć @steeldriver Czy to jest poprawna składnia: CFLAGS + = "-Wno-error = date-time"
Nayab Basha Sayed

3

Próbowałem kilkakrotnie dodając wiersz „Wno-error = date-time” do CFLAGS, ale nie działało.

Jak dotąd najłatwiejszym rozwiązaniem było znalezienie pliku, który generował wiersz „__DATE__” przez wykonanie

grep -r "__DATE__"

który (dla kodu źródłowego, z którym pracuję) dał mi plik

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

Po prostu zmieniłem to na ciąg bez zmiennej, usuwając znaki cudzysłowu, tj

"Compiled on __DATE__ for kernel %s"

Kompilacja mogła być kontynuowana

EDYCJA: Jak wspomniano wcześniej, użyj make cleanprzed uruchomieniem config i wykonaj, a nawet lepiej, wypakuj świeżą wersję z pliku zip / tar


1

Lepszym rozwiązaniem może być usunięcie szkodliwego makra poprzez usunięcie wiersza 66 z pliku 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

Teraz możesz kontynuować kompilację:

cd /home/andy/RTL8812AU_linux_v4.3.8_12175.20140902/
sudo make clean
make
sudo make install

sudo oczyścić jest ważne
mchid
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.