我在 CentOS 5.7 系统上运行。
我从其他人那里下载了一个源包和一个 .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
标志,这使得“所有警告都变成错误”。因此,构建失败并出现错误:
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
标志。-Werror
除了自己编辑 Makefile 之外,如何禁用构建的标志?
更新以响应@pwan 的回答:
.spec 文件非常通用,并且没有指定任何特殊标志:
%build
%configure \
--program-prefix="%{?_program_prefix}"
%{__make} %{?_smp_mflags}