2012-06-17 4 views
6

Ich habe ein Paket mit:Wie dpkg-buildflags CFLAGS zu überschreiben?

$ apt-get source <pkg-name> 

und jetzt versuche ich, es zu bauen mit:

$ dpkg-buildpackage -uc -us -j8 

Zu Beginn der Ausgabe wird angegeben:

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 

Ich möchte diese CFLAGS (auch die LDFLAGS) außer Kraft setzen. Ich habe versucht, die CFLAGS-envvar zu exportieren, genauso wie wir es bei der einfachen Konfiguration tun, ohne Erfolg. Wie kann ich diese Werte überschreiben?

Antwort

16

Das Paket, das Sie versuchen, neu zu erstellen, setzt (lesen Sie: überschreibt) die * FLAGS mit Hardening-spezifischen Flags abgerufen von dpkg-buildflags.

Wenn Sie diese Flags für Ihre eigenen Zwecke überschreiben müssen, sollten Sie dpkg-buildflags anweisen, die gewünschten Flags anstelle der (härtenden) Standardwerte anzugeben. Blick auf man dpkg-buildflags, finden Sie den Abschnitt über Umgebungsvariablen, esp. siehe DEB_flag_SET und DEB_flag_APPEND

so sollte dies den Trick (geben Sie Ihre eigenen * FLAGS):

$ DEB_CPPFLAGS_SET="-I/foo/bar/baz" DEB_CFLAGS_SET="-g -O6" DEB_LDFLAGS_SET="-L/fruzzel/frazzel/" dpkg-buildpackage -uc -us -j8 -rfakeroot 
+2

Was passiert, wenn es nicht so aussieht dpkg-buildflags wird laufen zu sein? Wie schwer ist es, das einem Paket hinzuzufügen? Gibt es einen alternativen Befehl? –

Verwandte Themen