Linux repositories inspector

dpkg-buildflags(1) - Deutsch

1.20.0

dpkg-dev

Debian package development tools

dpkg-lang

Translations for package dpkg

dpkg

Debian package management system

BEZEICHNUNG

dpkg-buildflags - liefert Bauschalter zum Einsatz beim Paketbau

\(:UBERSICHT

dpkg-buildflags [Option …] [Befehl]

BESCHREIBUNG

dpkg-buildflags ist ein Werkzeug, das zum Abfragen der zu verwendenden Kompilierungsschalter f\(:ur den Bau von Debian-Paketen eingesetzt wird. Die Standardschalter werden vom Lieferanten definiert, sie k\(:onnen auf mehrere Arten erweitert/\(:uberschrieben werden:
1. systemweit mit /etc/dpkg/buildflags.conf
2. f\(:ur den aktuellen Benutzer mit $XDG_CONFIG_HOME/dpkg/buildflags.conf, wobei $XDG_CONFIG_HOME standardm\(:a\(ssig auf $HOME/.config gesetzt ist
3. tempor\(:ar durch den Benutzer mittels Umgebungsvariablen (siehe Abschnitt UMGEBUNG)
4. dynamisch durch den Paketverwalter mittels Umgebungsvariablen, die \(:uber debian/rules gesetzt wurden (siehe Abschnitt UMGEBUNG)
Die Konfigurationsdateien k\(:onnen vier Arten von Direktiven enthalten:
SET Schalter Wert
\(:Uberschreibt den Schalter namens Schalter, um den Wert Wert zu erhalten.
STRIP Schalter Wert
Aus dem Schalter namens Schalter alle in Wert aufgef\(:uhrten Bauschalter entfernen
APPEND Schalter Wert
Erweitert den Schalter namens Schalter durch Anh\(:angen der in Wert angegebenen Optionen. Ein Leerzeichen wird dem angeh\(:angten Wert vorangestellt, falls der derzeitige Wert nicht leer ist.
PREPEND Schalter Wert
Erweitert den Schalter namens Schalter durch Voranstellen der in Wert angegebenen Optionen. Ein Leerzeichen wird dem vorangestellten Wert angeh\(:angt, falls der derzeitige Wert nicht leer ist.
Die Konfigurationsdateien k\(:onnen Kommentare in Zeilen enthalten, die mit einer Raute (#) beginnen. Leere Zeilen werden auch ignoriert.

BEFEHLE

--dump Gibt auf der Standardausgabe alle Kompilierschalter und ihre Werte aus. Es wird ein Schalter pro Zeile ausgegeben, wobei der Wert durch ein Gleichheitszeichen (\(BqSchalter=Wert\(lq) abgetrennt wird. Dies ist die Standardaktion.
--list Gibt die Liste der vom aktuellen Lieferanten unterst\(:utzten Schalter (einen pro Zeile) aus. Lesen Sie den Abschnitt UNTERST\(:UTZTE SCHALTER f\(:ur weitere Informationen \(:uber sie.
--status
Zeigt alle Informationen an, die zum Verst\(:andnis des Verhaltens von dpkg-buildflags n\(:utzlich sein k\(:onnen (seit Dpkg 1.16.5): relevante Umgebungsvariablen, aktueller Lieferant, Zustand der Funktionsschalter. Auch die entstehenden Compiler-Schalter mit ihrem Ursprung werden ausgegeben.
Dies ist zur Ausf\(:uhrung in debian/rules gedacht, so dass das Bauprotokoll einen klaren Nachweis der verwandten Bauschalter enth\(:alt. Dies kann zur Diagnose von Problemen in Zusammenhang mit diesen n\(:utzlich sein.
--export=Format
Gibt auf der Standardausgabe Befehle aus, die dazu verwandt werden k\(:onnen, alle Kompilierschalter f\(:ur bestimmte Werkzeuge zu exportieren. Falls der Wert von Format nicht angegeben wird, wird sh angenommen. Nur Kompilierschalter, die mit einem Gro\(ssbuchstaben beginnen, werden aufgenommen. Bei allen anderen wird angenommen, dass sie f\(:ur die Umgebung nicht geeignet sind. Unterst\(:utzte Formate:
sh Shell-Befehle, um alle Kompilierungsschalter in der Umgebung zu setzen und zu exportieren. Die Schalterwerte werden maskiert, so dass die Ausgabe f\(:ur Auswertung durch eine Shell bereit ist.
cmdline
Argumente, die an die Befehlszeile eines Bauprogrammes \(:ubergeben werden, um alle \(:Ubersetzungsschalter zu verwenden (seit Dpkg 1.17.0). Die Schalterwerte werden in Shell-Syntax maskiert.
configure (konfiguriert)
Dies ist ein historischer Alias f\(:ur cmdline.
make Make-Direktiven, um alle Kompilierungsschalter in der Umgebung zu setzen und zu exportieren. Die Ausgabe kann in ein Make-Steuerdateifragment geschrieben und mit einer include-Direktive ausgewertet werden.
--get Schalter
Gibt den Wert des Schalters auf der Standardausgabe aus. Beendet sich mit 0, falls der Schalter bekannt ist, andernfalls mit 1.
--origin Schalter
Gibt den Ursprung des von --get gelieferten Werts aus. Beendet sich mit 0, falls der Schalter bekannt ist, andernfalls mit 1. Der Ursprung kann einer der folgenden Werte sein:
vendor der urspr\(:unglich vom Lieferanten gesetzte Schalter wird zur\(:uckgeliefert
system der Schalter wurde durch eine systemweite Konfiguration gesetzt/ver\(:andert
user der Schalter wurde durch eine benutzerspezifische Konfiguration gesetzt/ver\(:andert
env der Schalter wurde durch eine umgebungsspezifische Konfiguration gesetzt/ver\(:andert
--query Alle Informationen anzeigen, die zur Erkl\(:arung des Verhaltens des Programms hilfreich sein k\(:onnten: aktueller Lieferant, relevante Umgebungsvariablen, Funktionalit\(:atsbereiche, Zustand der Funktionsschalter und die Compiler-Schalter mit ihrem Ursprung (seit Dpkg 1.19.0).
Zum Beispiel:
  Vendor: Debian
  Environment:
   DEB_CFLAGS_SET=-O0 -Wall

Area: qa Features: bug=no canary=no
Area: reproducible Features: timeless=no
Flag: CFLAGS Value: -O0 -Wall Origin: env
Flag: CPPFLAGS Value: -D_FORTIFY_SOURCE=2 Origin: vendor
--query-features Bereich
Gibt die Funktionalit\(:aten, die f\(:ur den \(:ubergebenen Bereich aktiviert sind, aus (seit Dpkg 1.16.2). Die einzigen unter Debian und abgeleiteten Distributionen derzeit erkannten Bereiche sind future, qa, reproducible, sanitize und hardening. Lesen Sie den Abschnitt FUNKTIONALIT\(:ATSBEREICHE f\(:ur weitere Details. Beendet sich mit 0, falls der Bereich bekannt ist, andernfalls mit 1.
Die Ausgabe ist im RFC822-Format, mit einem Abschnitt pro Funktionalit\(:at. Beispiel:
  Feature: pie
  Enabled: yes

Feature: stackprotector Enabled: yes
--help Zeigt einen Hinweis zum Aufruf und beendet das Programm.
--version
Gibt die Version aus und beendet das Programm.

UNTERST\(:UTZTE SCHALTER

CFLAGS Optionen f\(:ur den C-Compiler. Der vom Lieferanten gesetzte Standardwert enth\(:alt -g und die Standard-Optimierungsstufe (normalerweise -O2 oder -O0, falls die Umgebungsvariable DEB_BUILD_OPTIONS noopt definiert).
CPPFLAGS
Optionen f\(:ur den C-Pr\(:aprozessor. Standardwert: leer.
CXXFLAGS
Optionen f\(:ur den C++-Compiler. Identisch zu CFLAGS.
OBJCFLAGS
Optionen f\(:ur den Objective-C-Compiler. Identisch zu CFLAGS.
OBJCXXFLAGS
Optionen f\(:ur den Objective-C++-Compiler. Identisch zu CXXFLAGS.
GCJFLAGS
Optionen f\(:ur den GNU-Java-Compiler (gcj). Eine Untermenge von CFLAGS.
FFLAGS Optionen f\(:ur den Fortran-77-Compiler. Eine Untermenge von CFLAGS.
FCFLAGS
Optionen f\(:ur den Fortran-9x-Compiler. Identisch zu FFLAGS.
LDFLAGS
Optionen, die beim Linken von Programmen oder Laufzeitbibliotheken an den Compiler weitergegeben werden (falls der Linker direkt aufgerufen wird, m\(:ussen -Wl und , aus diesen Optionen entfernt werden). Standardm\(:a\(ssig leer.
Neue Schalter k\(:onnen in Zukunft hinzugef\(:ugt werden, falls die Notwendigkeit aufkommt (beispielsweise, um weitere Sprachen zu unterst\(:utzen).

FUNKTIONALIT\(:ATSBEREICHE

Jede Bereichsfunktionalit\(:at kann durch den entsprechenden Bereichswert in den Umgebungsvariablen DEB_BUILD_OPTIONS und DEB_BUILD_MAINT_OPTIONS mit den \(bq+\(cq- und \(bq-\(cq-Schaltern aktiviert und deaktiviert werden. Soll beispielsweise f\(:ur hardening die \(Bqpie\(lq-Funktionalit\(:at aktiviert und die \(Bqfortify\(lq-Funktionalit\(:at deaktiviert werden, k\(:onnen Sie Folgendes in debian/rules verwenden:
export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify
Die spezielle Funktionalit\(:at all (in allen Bereichen g\(:ultig) kann dazu verwandt werden, alle Bereichsfunktionalit\(:aten auf einmal zu aktivieren oder zu deaktivieren. Um daher alles im Bereich hardening zu deaktivieren und nur \(Bqformat\(lq und \(Bqfortify\(lq zu aktiveren, kann Folgendes eingesetzt werden:
export DEB_BUILD_MAINT_OPTIONS=hardening=-all,+format,+fortify

future (Zukunft)

Mehrere Optionen zur Kompilierung (Details weiter unten) k\(:onnen verwandt werden, um Funktionen zu aktivieren, die standardm\(:a\(ssig aktiviert sein sollten, dies aber aus R\(:uckw\(:artskompatibilit\(:atsgr\(:unden nicht sein k\(:onnen.
lfs Diese Einstellung (standardm\(:a\(ssig deaktiviert) aktiviert die Unterst\(:utzung f\(:ur gro\(sse Dateien auf 32-Bit-Architekturen, bei denen ihre ABI diese Unterst\(:utzung nicht standardm\(:a\(ssig aktiviert, indem -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 zu CPPFLAGS hinzugef\(:ugt wird.

qa (QS)

Mehrere Optionen zur Kompilierung (Details weiter unten) k\(:onnen verwandt werden, um Probleme im Quellcode oder im Bausystem zu erkennen.
bug Diese Einstellung (standardm\(:a\(ssig deaktiviert) f\(:ugt Warnoptionen hinzu, die zuverl\(:assig problematischen Quellcode erkennen. Diese Warnungen sind fatal. Die einzigen derzeit unterst\(:utzten Schalter sind CFLAGS und CXXFLAGS, wobei die Schalter auf -Werror=array-bounds, -Werror=clobbered, -Werror=implicit-function-declaration und -Werror=volatile-register-var gesetzt werden.
canary Diese Einstellung (standardm\(:a\(ssig deaktiviert) f\(:ugt Pseudo-Zufallsbarrieren-Optionen zu den Bauschaltern hinzu, so dass die Bauprotokolle \(:uberpr\(:uft werden k\(:onnen, wie die Bauschalter weitergereicht werden. Dies erlaubt, Auslassungen in den normalen Bauschaltereinstellungen zu finden. Derzeit werden nur die Schalter CPPFLAGS, CFLAGS, OBJCFLAGS, CXXFLAGS und OBJCXXFLAGS unterst\(:utzt, wobei die Schalter auf -D__DEB_CANARY_Schalter_Zufallskennung__ gesetzt werden, und LDFLAGS, das auf -Wl,-z,deb-canary-Zufallskennung gesetzt wird.

sanitize (Bereinigung)

Mehrere Kompilierzeit-Optionen (weiter unten beschrieben) k\(:onnen dazu verwandt werden, ein erstelltes Programm vor Speicherverf\(:alschungsangriffen Speicherlecks, Verwendung nach Freigabe, Daten-Zugriffswettl\(:aufen (\(Bqraces\(lq) in Threads und Fehlern durch undefiniertes Verhalten zu bereinigen. Hinweis: Diese Optionen sollten nicht beim Bauen im Produktivbetrieb benutzt werden, da sie die Zuverl\(:assigkeit von spezifikationsgetreuem Code, die Sicherheit oder sogar die Funktionalit\(:at reduzieren bzw. negativ beeinflussen k\(:onnen.
address
Diese Einstellung (standardm\(:a\(ssig deaktiviert) f\(:ugt -fsanitize=address zu LDFLAGS und -fsanitize=address -fno-omit-frame-pointer zu CFLAGS und CXXFLAGS hinzu.
thread Diese Einstellung (standardm\(:a\(ssig deaktiviert) f\(:ugt -fsanitize=thread zu CFLAGS, CXXFLAGS und LDFLAGS hinzu.
leak Diese Einstellung (standardm\(:a\(ssig deaktiviert) f\(:ugt -fsanitize=leak zu LDFLAGS hinzu. Sie wird automatisch deaktiviert, falls entweder die Funktionalit\(:aten address oder thread aktiviert werden, da diese sie einschlie\(ssen.
undefined
Diese Einstellung (standardm\(:a\(ssig deaktiviert) f\(:ugt -fsanitize=undefined zu CFLAGS, CXXFLAGS und LDFLAGS hinzu.

hardening (H\(:artung)

Mehrere Kompilierzeit-Optionen (weiter unten beschrieben) k\(:onnen dazu verwandt werden, ein erstelltes Programm gegen Speicherverf\(:alschungsangriffe zu h\(:arten, oder zus\(:atzliche Warnungsmeldungen w\(:ahrend der \(:Ubersetzung auszugeben. Sie werden f\(:ur Architekturen, die diese unterst\(:utzen, standardm\(:a\(ssig aktiviert; die Ausnahmen sind unten angegeben.
format Diese Einstellung (standardm\(:a\(ssig aktiviert) f\(:ugt -Wformat -Werror=format-security zu CFLAGS, CXXFLAGS CXXFLAGS, OBJCFLAGS und OBJCXXFLAGS hinzu. Damit erhalten Sie Warnungen bei inkorrekter Verwendung von Formatzeichenketten. Es wird zu einem Fehler f\(:uhren, wenn Formatfunktionen deart verwandt werden, dass daraus ein m\(:ogliches Sicherheitsproblem werden k\(:onnte. Derzeit warnt dies bei Aufrufen von printf- und scanf-Funktionen, bei denen die Formatzeichenkette nicht eine reine Zeichenkette ist und es keine Formatargumente gibt, wie in printf(foo); statt printf("%s", foo);. Dies k\(:onnte ein Sicherheitsproblem sein, falls die Formatzeichenkette aus einer unvertrauensw\(:urdigen Eingabe stammt und \(bq%n\(cq enth\(:alt.
fortify
Diese Einstellung (standardm\(:a\(ssig aktiviert) f\(:ugt -D_FORTIFY_SOURCE=2 zu CPPFLAGS hinzu. W\(:ahrend der Code-Erstellung hat der Compiler umfangreiche Informationen \(:uber Puffergr\(:o\(ssen (wo m\(:oglich) und versucht, unsichere unbegrenzte Pufferfunktionsaufrufe durch l\(:angenbegrenzte zu ersetzen. Das ist besonders f\(:ur alten, verkramten Code n\(:utzlich. Zus\(:atzlich werden Formatzeichenketten in schreibbarem Speicher, die \(bq%n\(cq enthalten, blockiert. Falls eine Anwendung von solchen Formatzeichenketten abh\(:angt, m\(:ussen daf\(:ur andere L\(:osungsm\(:oglichkeiten gefunden werden.
Beachten Sie, dass die Quellen auch mit -O1 oder h\(:oher \(:ubersetzt werden m\(:ussen, damit diese Option einen Effekt hat. Falls die Umgebungsvariable DEB_BUILD_OPTIONS noopt enth\(:alt, dann wird die Unterst\(:utzung von fortify aufgrund neuer Warnungen von Glibc 2.16 und neuer deaktiviert.
stackprotector
Diese Einstellung (standardm\(:a\(ssig aktiviert falls \(Bqstackprotectorstrong\(lq nicht verwandt wird) f\(:ugt -fstack-protector --param=ssp-buffer-size=4 zu CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS und FCFLAGS hinzu. Dies f\(:ugt Sicherheitspr\(:ufungen gegen die \(:Uberschreibung des Stapelspeichers (Stacks) hinzu. Damit werden viele m\(:ogliche Code-Einf\(:ugeangriffe zu Abbruchsituationen. Im besten Fall werden damit Code-Einf\(:ugungsangriffe zu Diensteverweigerungsangriffen oder zu keinen Problemen (abh\(:angig von der Anwendung).
Diese Funktionalit\(:at ben\(:otigt das Linken mit Glibc (oder einem anderen Anbieter von __stack_chk_fail). Sie muss daher deaktiviert werden, wenn mit -nostdlib oder -ffreestanding oder \(:Ahnlichem gebaut wird.
stackprotectorstrong
Diese Einstellung (standardm\(:a\(ssig aktiviert) f\(:ugt -fstack-protector-strong zu CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS und FCFLAGS hinzu. Dies ist eine st\(:arkere Variante von stackprotector, allerdings ohne signifikante Einbu\(ssen bei der Leistung.
Deaktivierung von stackprotector deaktiviert auch diese Einstellung.
Diese Funktionalit\(:at stellt die gleichen Anforderungen wie stackprotector und ben\(:otigt zus\(:atzlich GCC 4.9 oder neuer.
relro Diese Einstellung (standardm\(:a\(ssig aktiviert) f\(:ugt -Wl,-z,relro zu LDFLAGS hinzu. W\(:ahrend des Ladens des Programms m\(:ussen mehrere ELF-Speicherabschnitte vom Binder (Linker) geschrieben werden. Diese Einstellung signalisiert dem Ladeprogramm, diese Abschnitte in nur-Lese-Zugriff zu \(:andern, bevor die Steuerung an das Programm \(:ubergeben wird. Insbesondere verhindert dies GOT-\(:Uberschreibeangriffe. Falls diese Option deaktiviert ist, wird auch bindnow deaktiviert.
bindnow
Diese Einstellung (standardm\(:a\(ssig deaktiviert) f\(:ugt -Wl,-z,now zu LDFLAGS hinzu. W\(:ahrend des Ladens des Programms werden alle dynamischen Symbole aufgel\(:ost, womit das gesamte PLT nur-lesend markiert werden kann (aufgrund von relro oben). Diese Option kann nicht aktiviert werden, falls relro nicht aktiviert ist.
pie Diese Einstellung (seit Dpkg 1.18.23 ohne globale Vorgabe, da sie jetzt standardm\(:a\(ssig durch GCC auf den Debian-Architekturen Amd64, Arm64, Armel, Armhf, Hurd-i386, I386, Kfreebsd-amd64, Kfreebsd-i386, Mips, Mipsel, Mips64el, Powerpc, PPC64, PPC64el, Riscv64, S390x, Sparc und Sparc64 aktiviert ist) f\(:ugt, falls ben\(:otigt, die ben\(:otigten Optionen, um PIE zu aktivieren oder zu deaktivieren, \(:uber GCC-Spezifikationsdateien hinzu, abh\(:angig davon, ob GCC auf diesen Architekturen die Schalter selbst einspeist oder nicht. Wenn die Einstellung aktiviert ist und GCC den Schalter einspeist, f\(:ugt dies nichts hinzu. Wenn die Einstellung aktiviert ist und GCC den Schalter nicht einspeist, dann f\(:ugt es -fPIE (mittels /usr/share/dpkg/pie-compiler.specs) zu CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS und FCFLAGS und -fPIE -pie (mittels /usr/share/dpkg/pie-link.specs) zu LDFLAGS hinzu. Wenn die Einstellung deaktiviert ist und GCC den Schalter einspeist, dann f\(:ugt es -fno-PIE (mittels /usr/share/dpkg/no-pie-compile.specs) zu CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS und FCFLAGS und -fno-PIE -no-pie (mittels /usr/share/dpkg/no-pie-link.specs) zu LDFLAGS hinzu.
\(BqPosition Independent Executable\(lq (positionsunabh\(:angige Programme) werden ben\(:otigt, um \(BqAddress Space Layout Randomization\(lq (Bereitstellung eines zuf\(:alligen Adressbereichlayouts) auszunutzen, der von einigen Kernelversionen bereitgestellt wird. W\(:ahrend ASLR bereits f\(:ur Datenbereiche auf dem Stapel (Stack) und Heap erzwungen werden kann (brk und mmap), m\(:ussen die Codebereiche positionsunabh\(:angig \(:ubersetzt werden. Laufzeitbibliotheken machen dies bereits (-fPIC), so dass sie ASLR automatisch erhalten, aber Programm-.text-Regionen m\(:ussen mit PIE gebaut werden, um ASLR zu erhalten. Wenn dies passiert, sind ROP- (Return Oriented Programming) Angriffe sehr viel schwerer durchzuf\(:uhren, da es keine statischen Orte mehr gibt, zu denen w\(:ahrend eines Speicherverf\(:alschungsangriffs hingesprungen werden k\(:onnte.
PIE ist nicht zu -fPIC kompatibel, daher m\(:ussen Sie beim Bau von Laufzeitbibliotheksobjekten im Allgemeinen Vorsicht walten lassen. Da aber der ausgegebene PIE-Schalter mittels GCC-Spezifikationsdateien hinzugef\(:ugt wird, sollte es immer sicher sein, sie bedingungslos zu setzen, unabh\(:angig von dem Objekttyp, der \(:ubersetzt oder gelinkt wird.
Statische Bibliotheken k\(:onnen von jedem Programm und anderen statischen Bibliotheken benutzt werden. Abh\(:angig von den zum Kompilieren aller Objekte innerhalb einer statischen Bibliothek verwandten Schaltern k\(:onnen diese Bibliotheken von verschiedenen Gruppen von Objekten verwandt werden:
keine Kann weder in ein PIE-Programm noch in eine Laufzeitbibliothek gelinkt werden.
-fPIE Kann in jedes Programm, aber nicht in eine Laufzeitbibliothek gelinkt werden (empfohlen).
-fPIC Kann in jedes Programm und jede Laufzeitbibliothek gelinkt werden.
Falls es notwendig ist, diese Schalter manuell zu setzen und die GCC-Spezifikations-Hinzuf\(:ugung zu umgehen, m\(:ussen mehrere Dinge beachtet werden. Die bedingungslose und explizite \(:Ubergabe von -fPIE, -fpie oder -pie an das Bausystem mit Libtool ist sicher, da diese Schalter entfernt werden, wenn Laufzeit-Bibliotheken gebaut werden. Andernfalls k\(:onnte es bei Projekten, die sowohl Programme wie auch Laufzeit-Bibliotheken bauen, notwendig sein, dass Sie beim Bau der Laufzeit-Bibliotheken sicherstellen, dass -fPIC immer als Letztes an die Kompilierungsschalter wie CFLAGS \(:ubergeben wird (so dass es jedes fr\(:uhere -PIE au\(sser Kraft setzen kann) und -shared als Letztes an Link-Schalter wie LDFLAGS \(:ubergeben wird (so dass es jedes fr\(:uhere -pie au\(sser Kraft setzen kann). Hinweis: Das sollte mit der Vorgabe-GCC-Spezifikationsmaschinerie nicht notwendig sein.
Zus\(:atzlich k\(:onnen auf einigen Architekturen mit sehr wenigen Registern (dazu geh\(:ort aber i386 nicht mehr, seitdem in GCC >= 5 Optimierungen erfolgten) Leistungsverluste von bis zu 15% in sehr text-Segment-lastigen Anwendungsf\(:allen auftreten, da PIE \(:uber allgemeine Register implementiert ist; in den meisten Anwendungsf\(:allen sind dies weniger als 1%. Architekturen mit mehr allgemeinen Registern (z.B. Amd64) erfahren nicht diese Schlimmstfall-Strafe.

reproducible (Reproduzierbarkeit)

Die Kompilierzeit-Optionen (weiter unten beschrieben) k\(:onnen dazu verwandt werden, die Reproduzierbarkeit zu verbessern oder zus\(:atzliche Warnungsmeldungen w\(:ahrend der \(:Ubersetzung auszugeben. Sie werden f\(:ur Architekturen, die diese unterst\(:utzen, standardm\(:a\(ssig aktiviert; die Ausnahmen sind unten angegeben.
timeless
Diese (standardm\(:a\(ssig aktivierte) Einstellung f\(:ugt -Wdate-time zu CPPFLAGS hinzu. Dies f\(:uhrt zu Warnungen, wenn die Makros __TIME__, __DATE__ und __TIMESTAMP__ verwandt werden.
fixfilepath
Diese Einstellung (standardm\(:a\(ssig deaktiviert) f\(:ugt -ffile-prefix-map=BUILDPATH=. zu CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS und FCFLAGS hinzu, wobei BUILDPATH auf das oberste Verzeichnis des bauenden Pakets gesetzt wird. Dies f\(:uhrt dazu, dass der Baupfad aus allen erstellten Dateien entfernt wird.
Falls sowohl fixdebugpath als auch fixfilepath gesetzt sind, hat diese Option Vorrang, da sie eine Obermenge erster ist.
fixdebugpath
Diese Einstellung (standardm\(:a\(ssig aktiviert) f\(:ugt -fdebug-prefix-map=BUILDPATH=. zu CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS und FCFLAGS hinzu, wobei BUILDPATH auf das oberste Verzeichnis des bauenden Pakets gesetzt wird. Dies f\(:uhrt dazu, dass der Baupfad aus allen erstellten Debug-Symbolen entfernt wird.

UMGEBUNG

Es gibt zwei Gruppen von Umgebungsvariablen, die den gleichen Vorgang durchf\(:uhren. Der erste (DEB_Schalter_Vorg) sollte niemals innerhalb von debian/rules verwandt werden. Er ist f\(:ur Benutzer gedacht, die das Quellpaket mit anderen Bauschaltern erneut bauen m\(:ochten. Der zweite Satz (DEB_Schalter_MAINT_Vorg) sollte nur durch Paketbetreuer in debian/rules verwandt werden, um die entstehenden Bauschalter zu \(:andern.
DEB_Schalter_SET
DEB_Schalter_MAINT_SET Diese Variable kann zum Erzwingen des f\(:ur Schalter zur\(:uckgegebenen Werts verwandt werden.
DEB_Schalter_STRIP
DEB_Schalter_MAINT_STRIP Diese Variable kann zum Bereitstellen einer durch Leerzeichen getrennten Liste von Optionen verwandt werden, die aus dem Satz von Schalter zur\(:uckgelieferten Schaltern entfernt werden.
DEB_Schalter_APPEND
DEB_Schalter_MAINT_APPEND Diese Variable kann zum Anh\(:angen erg\(:anzender Optionen zum Wert, der von Schalter zur\(:uckgegeben wird, verwandt werden.
DEB_Schalter_PREPEND
DEB_Schalter_MAINT_PREPEND Diese Variable kann zum Voranstellen erg\(:anzender Optionen zum Wert, der von Schalter zur\(:uckgegeben wird, verwandt werden.
DEB_BUILD_OPTIONS
DEB_BUILD_MAINT_OPTIONS Diese Variablen k\(:onnen von Benutzern oder Betreuern zum Deaktivieren oder Aktivieren verschiedener Bereichsfunktionalit\(:aten benutzt werden, die Bauschalter beeinflussen. Die Variable DEB_BUILD_MAINT_OPTIONS setzt jede Einstellung in den Funktionalit\(:atsbereichen DEB_BUILD_OPTIONS au\(sser Kraft. Lesen Sie den Abschnitt FUNKTIONALIT\(:ATSBEREICHE f\(:ur weitere Details.
DEB_VENDOR
Diese Einstellung definiert den aktuellen Lieferanten. Falls nicht gesetzt, wird er aus /etc/dpkg/origins/default ermittelt.
DEB_BUILD_PATH
Diese Variable setzt den Baupfad (seit Dpkg 1.18.8), der in Funktionalit\(:aten wie fixdebugpath verwandt wird, so dass sie durch den Aufrufenden gesteuert werden k\(:onnen. Diese Variable ist derzeit spezifisch f\(:ur Debian und Derivative.
DPKG_COLORS
Setzt den Farbmodus (seit Dpkg 1.18.5). Die derzeit unterst\(:utzten Werte sind: auto (Vorgabe), always und never.
DPKG_NLS
Falls dies gesetzt ist, wird es zur Entscheidung, ob Native Language Support, auch als Unterst\(:utzung f\(:ur Internationalisierung (oder i18n) bekannt, aktiviert wird (seit Dpkg 1.19.0). Die akzeptierten Werte sind: 0 und 1 (Vorgabe).

DATEIEN

Konfigurationsdateien

/etc/dpkg/buildflags.conf
Systemweite Konfigurationsdatei
$XDG_CONFIG_HOME/dpkg/buildflags.conf oder
$HOME/.config/dpkg/buildflags.conf Benutzerkonfigurationsdatei

Paketierungsunterst\(:utzung

/usr/share/dpkg/buildflags.mk
Make-Steuerdateischnipsel, das alle von dpkg-buildflags unterst\(:utzten Schalter in Variablen laden (und optional exportieren) wird. (seit Dpkg 1.16.1)

BEISPIELE

Um Bauschalter an einen Baubefehl in einer Make-Steuerdatei zu \(:ubergeben:
$(MAKE) $(shell dpkg-buildflags --export=cmdline)

./configure $(shell dpkg-buildflags --export=cmdline)
Um Bauschalter in einem Shell-Skript oder Shell-Fragement zu setzen, kann eval verwendet werden, um die Ausgabe zu interpretieren und die Schalter in die Umgebung zu exportieren:
eval "$(dpkg-buildflags --export=sh)" && make
Oder die Positionsparameter zu setzen, die an einen Befehl \(:ubergeben werden sollen:
eval "set -- $(dpkg-buildflags --export=cmdline)"
for dir in a b c; do (cd $dir && ./configure "$@" && make); done

Verwendung in debian/rules

Sie sollten dpkg-buildflags aufrufen oder buildflags.mk in die Datei debian/rules einbinden, um die ben\(:otigten Bauschalter, die an das Bausystem weitergegeben werden sollen, abzufragen. Beachten Sie, dass \(:altere Versionen von dpkg-buildpackage (vor Dpkg 1.16.1) diese Variablen automatisch exportierten. Allerdings sollten Sie sich nicht darauf verlassen, da dies den manuellen Aufruf von debian/rules nicht korrekt erm\(:oglicht.
F\(:ur Pakete mit Autoconf-artigen Bausystemen k\(:onnen Sie die relevanten Optionen direkt wie oben gezeigt an Configure oder make(1) \(:ubergeben.
F\(:ur andere Bausysteme oder wenn Sie feingranularere Steuerung ben\(:otigen (welcher Schalter wo weitergegeben wird), k\(:onnen Sie --get verwenden. Oder Sie k\(:onnen stattdessen buildflags.mk einbinden, das sich um den Aufruf von dpkg-buildflags k\(:ummert und die Bauschalter in Make-Variablen speichert.
Falls Sie alle Bauschalter in die Umgebung exportieren m\(:ochten (wo sie dann vom Bausystem eingelesen werden k\(:onnen):
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
F\(:ur zus\(:atzliche Steuerung, was exportiert wird, k\(:onnen Sie die Variablen manuell exportieren (da keine standardm\(:a\(ssig exportiert werden):
include /usr/share/dpkg/buildflags.mk
export CPPFLAGS CFLAGS LDFLAGS
Und nat\(:urlich k\(:onnen Sie die Schalter manuell an Befehle weitergeben:
include /usr/share/dpkg/buildflags.mk
build-arch:
        $(CC) -o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)

\(:UBERSETZUNG

Die deutsche \(:Ubersetzung wurde 2004, 2006-2020 von Helge Kreutzmann <>, 2007 von Florian Rehnisch <> und 2008 von Sven Joachim <> angefertigt. Diese \(:Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 2 oder neuer f\(:ur die Kopierbedingungen. Es gibt KEINE HAFTUNG.
⇧ Top