CentOS 5.7 시스템에서 실행됩니다.rpmbuild : rpmbuild를 사용하여 autoconf에 알리거나 플래그를 비활성화하도록 구성하려면 어떻게해야합니까?
소스 패키지와 .spec 파일을 다른 사람으로부터 다운로드했습니다. 나는 같은 바닐라 명령을 사용하여 소스에서 RPM을 만들려고합니다.
% rpmbuild -ba ~/rpmbuild/SPECS/foo.spec
...
Configuration summary:
======================
Host type................: x86_64-redhat-linux-gnu
CC.......................: gcc
CFLAGS...................: -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Werror
Package..................: sudosh2
Version..................: 1.0.4
Installation prefix......: /usr
Man directory............: /usr/share/man
sysconfdir...............: /etc
recording input..........: no
그러나이 빌드는 실패합니다. 코드가 조금 엉성하고 몇 가지 경고가 발생합니다. 이 툴체인의 일부는 -Werror
플래그를 사용하고 있는데, 이는 "all warnings into errors"이됩니다. 따라서, 빌드 오류와 함께 실패합니다
gcc -DHAVE_CONFIG_H -I. -I.. -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Werror -MT parse.o -MD -MP -MF .deps/parse.Tpo -c -o parse.o parse.c
cc1: warnings being treated as errors
sudosh.c: In function 'main':
sudosh.c:486: warning: unused variable 'written'
sudosh.c:112: warning: unused variable 'found'
cc1: warnings being treated as errors
parse.c: In function 'parse':
parse.c:20: warning: unused variable 'y'
parse.c:14: warning: unused variable 'opt'
parse.c:14: warning: unused variable 'cmt'
parse.c:14: warning: unused variable 'arg'
parse.c:10: warning: unused variable 'i'
parse.c:10: warning: unused variable 'line_number'
make[2]: *** [sudosh.o] Error 1
나는 적절한 수정 코드를 해결하기 위해 저자입니다 알지만, 단기적으로이 문제를 해결하려면. RPM이 필요합니다.
./configure
또는 autoconf
이 자동으로 -Werror
플래그를 추가하는 것처럼 보입니다. Makefile을 직접 편집하지 않고 내 빌드에 대한 -Werror
플래그를 비활성화 할 수 있습니까? @ pwan의 대답에 응답
업데이트 :
을 .spec 파일이 꽤 일반적이며, 특별한 플래그를 지정하지 않습니다
%build
%configure \
--program-prefix="%{?_program_prefix}"
%{__make} %{?_smp_mflags}
이 문제는'-Wall' 플래그가 아닌'-Werror' 플래그로 인해 발생한다는 것을 발견했습니다. 내 대답이 업데이트되었습니다. –