我收到了一个包裹,里面有:
$ apt-get source <pkg-name>
现在我正尝试使用以下命令构建它:
$ dpkg-buildpackage -uc -us -j8
在输出的开头,有这样的说明:
dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor): -D_FORTIFY_SOURCE=2
dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security
dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor): -Wl,-Bsymbolic-functions -Wl,-z,relro
我想覆盖这些CFLAGS(也包括LDFLAGS)。我尝试过导出CFLAGS环境变量的方式,就像我们用普通的configure一样,但没有成功。如何覆盖这些值?
DEB_CFLAGS_SET
。我在看你,Debian 6 上的exim4
。这种情况下,您可以执行dpkg-buildpackage -R'make -f debian/rules CFLAGS=-g3
。或者dpkg-buildpackage -R'sh ./1.sh'
,其中1.sh
:make -f debian/rules CFLAGS='-g3 -Og' "$@"
(如果您的命令需要引号)。顺便说一句,如果我要调试程序,我会选择-g3 -Og
或只是-g3
(如果不支持-Og
)。-g
也可能足够了,但生成的映像不包括宏信息(不能在表达式中使用宏)。 - x-yuridh
**(几乎是标准)。当然,软件包维护者可以在d/rules中做各种事情,并且可能已经(意外地)破坏了DEB_*_SET
(许多非官方的Debian软件包在打包方面质量低劣)。 - umläute