So deaktivieren Sie -Werror = Datum-Uhrzeit / Makro "__DATE__" verhindert möglicherweise reproduzierbare Builds


13

Ich versuche, einen Treiber für einen Netis WF2190-Adapter zu kompilieren. Ja, ich habe gerade das neueste von ihnen heruntergeladen.

Wie kann ich das -Werror=date-timeim Build deaktivieren ? Ich kann es nirgendwo im Build-Skript finden, daher muss es eine globale Standardeinstellung sein. Es ist klar, dass der Code nur versucht, das Erstellungsdatum und die Erstellungszeit in die Ausgabe einzubetten. Daher sollte es kein Problem geben, diese Warnung zu deaktivieren.

Hier sind einige der Warnungen, die ich erhalte und die als Fehler behandelt werden:

/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
Die date-timeWarnung ist neu in gcc 4.9. Ich denke, sie wird möglicherweise implizit von aktiviert -Wall (und implizit von in einen Fehler umgewandelt -Werror). Sie könnten versuchen , es drehen off explizit mit der -Wno-Form , dh -Wno-error=date-timeauf die hinzugefügt , CFLAGSaber ich bin zu raten und es nicht testen können.
Steeldriver

@steeldriver ja, das hat funktioniert, danke! Sie können es gerne als Antwort einreichen und ich werde es akzeptieren. Der andere Teil des Problems war, dass ich nicht realisierte, dass das Installationsskript jedes Mal die Quelle erneut extrahierte und die am Makefile vorgenommenen Änderungen überschrieb.
Andy

Antworten:


14

Die Datum-Uhrzeit-Warnung ist in gcc 4.9 neu, glaube ich - sie wird möglicherweise implizit von aktiviert -Wall (und in einen Fehler umgewandelt -Werror).

Sie können versuchen, es explizit mithilfe des -Wno-Formulars zu deaktivieren, z. B. durch Hinzufügen

-Wno-error=date-time 

zum CFLAGS.


Was muss man konkret in das Terminal eingeben, um dies zu tun?
Hack-R

1
Hallo @steeldriver Ist dies die richtige Syntax: CFLAGS + = "-Wno-error = Datum-Zeit"
Nayab Basha Sayed

3

Ich habe einige Male versucht, die Zeile "Wno-error = date-time" zu den CFLAGS hinzuzufügen, aber es schien nicht zu funktionieren.

Die für mich mit Abstand einfachste Lösung bestand darin, die Datei zu finden, die die Zeile "__DATE__" durch Ausführen erzeugt

grep -r "__DATE__"

welches (für den Quellcode, mit dem ich arbeite) gab mir die Datei

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

Ich habe dies einfach in eine Zeichenfolge ohne Variable geändert, indem ich die Anführungszeichen entfernt habe, d. H

"Compiled on __DATE__ for kernel %s"

Die Zusammenstellung konnte dann fortgesetzt werden

BEARBEITEN: Wie bereits erwähnt, make cleanvor dem Ausführen von configure verwenden und eine neue Version aus der zip / tar-Datei erstellen oder noch besser extrahieren


1

Es ist möglicherweise besser, das fehlerhafte Makro durch Löschen der Zeile 66 aus der Datei rtw_debug.c zu entfernen.

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

Jetzt können Sie mit dem Build fortfahren:

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

sudo sauber machen ist wichtig
mchid
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.