-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-timeCFLAGS
스틸 드라이버

@steeldriver 예, 작동했습니다, 감사합니다! 답변으로 제출해 주시면 감사하겠습니다. 문제의 다른 부분은 설치 스크립트가 매번 소스를 다시 추출하고 makefile에 대한 변경 사항을 덮어 쓰고 있다는 사실을 알지 못했습니다.
Andy

답변:


14

날짜-시간 경고는 gcc 4.9의 새로운 기능입니다. 아마도 암시 적으로 켜질 수 있습니다 -Wall(그리고 암시 적으로 오류로 바 possibly -Werror).

-Wno-양식을 사용하여 명시 적으로 해제 할 수 있습니다.

-Wno-error=date-time 

CFLAGS.


이를 위해 터미널에 무엇을 입력해야합니까?
Hack-R

1
안녕하세요이 올바른 구문은 @steeldriver : CFLAGS + = "-Wno 오류 = 날짜 - 시간"
Nayab 바샤 사예드

3

CFLAGS에 "Wno-error = date-time"행을 추가하려고 꽤 몇 번 시도했지만 작동하지 않는 것 같습니다.

가장 쉬운 해결책은 다음을 실행하여 "__DATE__"행을 생성하는 파일을 찾는 것입니다.

grep -r "__DATE__"

(작업중 인 소스 코드의 경우) 파일을 제공했습니다.

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

따옴표를 제거하여 변수없이 문자열로 간단히 변경했습니다.

"Compiled on __DATE__ for kernel %s"

그런 다음 컴파일을 진행할 수있었습니다

편집 : 앞에서 언급했듯이 make cleanzip / tar 파일에서 configure 및 make를 실행하거나 새로운 버전을 추출하기 전에 사용 하십시오.


1

rtw_debug.c 파일에서 66 행을 삭제하여 문제가되는 매크로를 제거하는 것이 좋습니다.

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 clean clean이 중요하다
mchid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.