Cách vô hiệu hóa -Werror = date-time / macro


13

Tôi đang cố gắng biên dịch trình điều khiển cho bộ điều hợp Netis WF2190. Vâng, tôi vừa tải về mới nhất từ ​​họ.

Làm thế nào tôi có thể vô hiệu hóa -Werror=date-timetrong bản dựng? Tôi không thể tìm thấy nó ở bất cứ đâu trong tập lệnh xây dựng nên tôi nghĩ nó phải là một số thiết lập mặc định toàn cầu. Rõ ràng mã chỉ đang cố gắng nhúng ngày / thời gian xây dựng vào đầu ra, do đó sẽ không có vấn đề gì với việc vô hiệu hóa cảnh báo này.

Dưới đây là một số cảnh báo tôi nhận được đang bị coi là lỗi:

/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
Các date-timecảnh báo là mới trong gcc 4.9 Tôi nghĩ rằng - đó là có thể bật ngầm bằng -Wall (và trở thành một lỗi ngầm bằng -Werror). Bạn có thể cố gắng biến nó tắt sử dụng một cách rõ ràng -Wno-tức là hình thức -Wno-error=date-timebổ sung vào CFLAGSnhưng tôi đoán và không thể kiểm tra nó.
Steel

@steel ấn có, đã làm việc, cảm ơn bạn! Bạn được chào đón để gửi nó như một câu trả lời và tôi sẽ chấp nhận nó. Một phần khác của vấn đề là tôi đã không nhận ra tập lệnh cài đặt đang trích xuất lại nguồn mỗi lần và ghi đè những thay đổi tôi đã thực hiện vào tệp tạo tệp.
Andy

Câu trả lời:


14

Tôi nghĩ rằng cảnh báo thời gian là mới trong gcc 4.9 - nó có thể được bật hoàn toàn bởi -Wall(và biến thành một lỗi ngầm định bởi -Werror).

Bạn có thể thử tắt nó một cách rõ ràng bằng cách sử dụng -Wno-biểu mẫu tức là bằng cách thêm

-Wno-error=date-time 

đến CFLAGS.


Điều gì, cụ thể, một người cần phải nhập vào thiết bị đầu cuối để làm điều này?
Hack-R

1
Xin chào @steel ấn Đây có phải là cú pháp đúng: CFLAGS + = "-Wno-error = date-time"
Nayab Basha Say

3

Tôi đã thử khá nhiều lần khi thêm dòng "Wno-error = date-time" vào CFLAGS, nhưng dường như nó không hoạt động.

Giải pháp đơn giản nhất đối với tôi là tìm tệp đang tạo dòng "__DATE__" bằng cách thực thi

grep -r "__DATE__"

mà (đối với mã nguồn mà tôi đang làm việc) đã cho tôi tệp

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

Tôi chỉ đơn giản thay đổi chuỗi này thành một chuỗi không có biến bằng cách xóa dấu ngoặc kép, nghĩa là

"Compiled on __DATE__ for kernel %s"

Quá trình biên dịch sau đó đã có thể tiến hành

EDIT: Như đã đề cập trước đó, sử dụng make cleantrước khi chạy configure và make, hoặc thậm chí tốt hơn, trích xuất một phiên bản mới từ tệp zip / tar


1

Có thể tốt hơn để xóa macro vi phạm bằng cách xóa dòng 66 khỏi tệp 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

Bây giờ bạn có thể tiếp tục với bản dựng:

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

sudo làm sạch là quan trọng
mchid
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.