วิธีปิดใช้งาน -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
Andy

คำตอบ:


14

คำเตือนเกี่ยวกับวันที่เป็นเรื่องใหม่ใน gcc 4.9 ฉันคิดว่ามันอาจเปิดโดยปริยายโดย-Wall(และกลายเป็นข้อผิดพลาดโดยปริยาย-Werror)

คุณสามารถลองปิดได้อย่างชัดเจนโดยใช้-Wno-แบบฟอร์มเช่นโดยการเพิ่ม

-Wno-error=date-time 

CFLAGSไป


โดยเฉพาะสิ่งใดที่เราต้องพิมพ์ลงในเครื่องเทอร์มินัลเพื่อทำสิ่งนี้?
Hack-R

1
สวัสดี @steeldriver นี่เป็นรูปแบบที่ถูกต้อง: CFLAGS + = "-Wno-error = date-time"
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ก่อนเรียกใช้กำหนดค่าและทำหรือดียิ่งขึ้นแยกรุ่นใหม่จากไฟล์ 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

sudo ให้สะอาดเป็นสิ่งสำคัญ
mchid
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.