Provided by: dpkg-dev_1.19.0.5ubuntu2.4_all bug

BEZEICHNUNG

       dpkg-buildflags - liefert Bauschalter zum Einsatz beim Paketbau

ÜBERSICHT

       dpkg-buildflags [Option …] [Befehl]

BESCHREIBUNG

       dpkg-buildflags    ist    ein   Werkzeug,   das   zum   Abfragen   der   zu   verwendenden
       Kompilierungsschalter für den Bau von Debian-Paketen eingesetzt wird. Die Standardschalter
       werden  vom  Lieferanten  definiert,  sie können auf mehrere Arten erweitert/überschrieben
       werden:

       1.     systemweit mit /etc/dpkg/buildflags.conf

       2.     für  den  aktuellen  Benutzer  mit   $XDG_CONFIG_HOME/dpkg/buildflags.conf,   wobei
              $XDG_CONFIG_HOME standardmäßig auf $HOME/.config gesetzt ist

       3.     temporär durch den Benutzer mittels Umgebungsvariablen (siehe Abschnitt UMGEBUNG)

       4.     dynamisch   durch   den   Paketverwalter   mittels   Umgebungsvariablen,  die  über
              debian/rules gesetzt wurden (siehe Abschnitt UMGEBUNG)

       Die Konfigurationsdateien können vier Arten von Direktiven enthalten:

       SET Schalter Wert
              Überschreibt den Schalter namens Schalter, um den Wert Wert zu erhalten.

       STRIP Schalter Wert
              Aus dem Schalter namens Schalter alle in Wert aufgeführten Bauschalter entfernen

       APPEND Schalter Wert
              Erweitert den Schalter namens Schalter  durch  Anhängen  der  in  Wert  angegebenen
              Optionen.  Ein  Leerzeichen  wird vor den angehängten 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 hinter den vorangestellten Wert angehängt, falls der
              derzeitige Wert nicht leer ist.

       Die Konfigurationsdateien können Kommentare auf Zeilen enthalten, die mit einer Raute  (#)
       beginnen. Leere Zeilen werden auch ignoriert.

BEFEHLE

       --dump Auf der Standardausgabe alle Kompilierschalter und ihre Werte ausgeben. Es wird ein
              Schalter pro  Zeile  ausgegeben,  wobei  der  Werte  durch  ein  Gleichheitszeichen
              („Schalter=Wert“) abgetrennt wird. Dies ist die Standardaktion.

       --list Gibt die Liste der vom aktuellen Lieferanten unterstützen Schalter (eine pro Zeile)
              aus. Lesen Sie den Abschnitt UNTERSTÜTZTE SCHALTER für weitere  Informationen  über
              sie.

       --status
              Alle Informationen anzeigen, die zum Verständnis des Verhaltens von dpkg-buildflags
              nützlich sein können (seit Dpkg 1.16.5):  relevante  Umgebungsvariablen,  aktueller
              Lieferant,  Zustand  der Funktionsschalter. Auch die entstehenden Compiler-Schalter
              mit ihrem Ursprung werden ausgeben.

              Dies ist zur Ausführung in debian/rules gedacht, so  dass  das  Bauprotokoll  einen
              klaren  Nachweis  der  verwandten  Bauschalter  enthält. Dies kann zur Diagnose von
              Problemen in Zusammenhang mit diesen nützlich sein.

       --export=Format
              Auf der Standardausgabe Befehle ausgeben, die dazu  verwandt  werden  können,  alle
              Kompilierschalter für bestimmte Werkzeuge zu exportieren. Falls der Wert von Format
              nicht angegeben wird, wird sh angenommen.  Nur  Kompilierschalter,  die  mit  einem
              Großbuchstaben  beginnen,  werden  aufgenommen.  Bei allen anderen wird angenommen,
              dass sie für die Umgebung nicht geeignet sind. Unterstützte Formate:

              sh     Shell-Befehle, um alle Kompilierungsschalter in der Umgebung zu  setzen  und
                     zu  exportieren.  Die Schalterwerte werden maskiert, so dass die Ausgabe für
                     Auswertung durch eine Shell bereit ist.

              cmdline
                     Argumente, die an die Befehlszeile eines Bauprogrammes übergeben werden,  um
                     alle Übersetzungsschalter zu verwenden (seit Dpkg 1.17.0). Die Schalterwerte
                     werden in Shell-Syntax maskiert.

              configured (konfiguriert)
                     Dies ist ein historischer Alias für cmdline.

              make   Make-Direktiven, um alle Kompilierungsschalter in der Umgebung zu setzen und
                     zu  exportieren.  Die  Ausgabe kann in ein Makefile-Fragment 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ünglich vom Lieferanten gesetzte Schalter wird zurückgeliefert

              system der Schalter wurde durch eine systemweite Konfiguration gesetzt/verändert

              user   der    Schalter   wurde   durch   eine   benutzerspezifische   Konfiguration
                     gesetzt/verändert

              env    der   Schalter   wurde   durch   eine   umgebungsspezifische   Konfiguration
                     gesetzt/verändert

       --query
              Alle  Informationen  anzeigen,  die  zur  Erklärung  des  Verhaltens  des Programms
              hilfreich  sein  könnten:  aktueller   Lieferant,   relevante   Umgebungsvariablen,
              Funktionalitätsbereiche,  Zustand  der  Funktionsschalter und die Complier-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
              Print the features enabled for a given area (since dpkg 1.16.2). The only currently
              recognized  areas  on Debian and derivatives are future, qa, reproducible, sanitize
              and hardening, see the FEATURE AREAS section for more details. Exits with 0 if  the
              area is known otherwise exits with 1.

              Das  Ausgabeformat  ist  im  RFC822-Format, mit einem Abschnitt pro Funktionalität.
              Beispiel:

                Feature: pie
                Enabled: yes

                Feature: stackprotector
                Enabled: yes

       --help Zeige den Bedienungshinweis und beende.

       --version
              Gebe die Version aus und beende sich.

UNTERSTÜTZTE SCHALTER

       CFLAGS Optionen für den C-Compiler. Der vom Lieferanten gesetzte Standardwert  enthält  -g
              und   die  Standard  Optimierungsstufe  (normalerweise  -O2  oder  -O0,  falls  die
              Umgebungsvariable DEB_BUILD_OPTIONS noopt definiert.

       CPPFLAGS
              Optionen für den C-Präprozessor. Standardwert: leer

       CXXFLAGS
              Optionen für den C++-Compiler. Identisch zu CFLAGS.

       OBJCFLAGS
              Optionen für den Objective-C-Compiler. Identisch zu CFLAGS.

       OBJCXXFLAGS
              Optionen für den Objective-C++-Compiler. Identisch zu CXXFLAGS.

       GCJFLAGS
              Optionen für den GNU-Java-Compiler (gcj). Eine Untermenge von CFLAGS.

       FFLAGS Optionen für den Fortran-77-Compiler. Eine Untermenge von CFLAGS.

       FCFLAGS
              Optionen für 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üssen -Wl und , aus
              diesen Optionen entfernt werden). Standardmäßig leer.

       Neue Schalter können in Zukunft  hinzugefügt  werden,  falls  die  Notwendigkeit  aufkommt
       (beispielsweise, um weitere Sprachen zu unterstützen).

FUNKTIONALITÄTSBEREICHE

       Jede   Bereichsfunktionalität   kann   durch   den   entsprechenden  Bereichswert  in  den
       Umgebungsvariablen  DEB_BUILD_OPTIONS  und  DEB_BUILD_MAINT_OPTIONS  mit  den   ‚+’-   und
       ‚-’-Schaltern  aktiviert  und  deaktiviert  werden.  Soll beispielsweise für hardening die
       „pie“-Funktionalität aktiviert und die „fortify“-Funktionalität deaktiviert werden, können
       Sie Folgendes in debian/rules verwenden:

         export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify

       Die  spezielle  Funktionalität  all (in allen Bereichen gültig) kann dazu verwandt werden,
       alle Bereichsfunktionalitäten auf einmal zu aktivieren oder zu deaktiveren. Um daher alles
       im  Bereich  hardening  zu  deaktiveren  und nur „format“ und „fortify“ zu aktiveren, kann
       Folgendes eingesetzt werden:

         export DEB_BUILD_MAINT_OPTIONS=hardening=-all,+format,+fortify

   future
       Several compile-time options (detailed below) can be used to enable features  that  should
       be enabled by default, but cannot due to backwards compatibility reasons.

       lfs    This   setting   (disabled  by  default)  enables  Large  File  Support  on  32-bit
              architectures  where  their  ABI  does  not  include  LFS  by  default,  by  adding
              -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 to CPPFLAGS.

   QS
       Mehrere  Optionen zur Kompilierung (Details weiter unten) können verwandt werden, um dabei
       zu helfen, Probleme im Quellcode oder im Bausystem zu erkennen.

       bug    Diese  Einstellung  (standardmäßig  deaktiviert)  fügt  Warnoptionen   hinzu,   die
              zuverlässig  problematischen  Quellcode  erkennen.  Diese Warnungen sind fatal. Die
              einzigen derzeit  unterstützten  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äßig deaktiviert) fügt Pseudo-Kanarienvögel-Optionen zu
              den Bauschaltern hinzu, so dass die Bauprotokolle überprüft werden können, wie  die
              Bauschalter   sich   fortpflanzen.  Dies  erlaubt,  Auslassungen  in  den  normalen
              Bauschaltereinstellungen zu finden.  Derzeit  werden  nur  die  Schalter  CPPFLAGS,
              CFLAGS,  OBJCFLAGS,  CXXFLAGS  und  OBJCXXFLAGS unterstützt, wobei die Schalter auf
              -D__DEB_CANARY_Schalter_Zufallskennung__  gesetzt  werden,  und  LDFLAGS,  das  auf
              -Wl,-z,deb-canary-Zufallskennung gesetzt wird.

   Bereinigung
       Mehrere Kompilierzeit-Optionen (weiter unten beschrieben) können dazu verwandt werden, ein
       erstelltes Programm  vor  Speicherverfälschungsangriffen  Speicherlecks,  Verwendung  nach
       Freigabe,  Daten-Zugriffswettläufen  (»races«)  in Threads und Fehlern durch undefiniertes
       Verhalten  zu  bereinigen.  Hinweis:  Diese  Optionen  sollten   nicht   beim   Bauen   im
       Produktivbetrieb  benutzt  werden,  da  sie die Zuverlässigkeit von spezifikationsgetreuem
       Code, die Sicherheit oder sogar die Funktionalität reduzieren können.

       address
              Diese Einstellung (standardmäßig deaktiviert) fügt  -fsanitize=address  zu  LDFLAGS
              und -fsanitize=address -fno-omit-frame-pointer zu CFLAGS und CXXFLAGS hinzu.

       thread Diese  Einstellung  (standardmäßig  deaktiviert)  fügt -fsanitize=thread zu CFLAGS,
              CXXFLAGS und LDFLAGS hinzu.

       leak   Diese Einstellung  (standardmäßig  deaktiviert)  fügt  -fsanitize=leak  zu  LDFLAGS
              hinzu.  Sie  wird  automatisch  deaktiviert,  falls  entweder  die Funktionalitäten
              address oder thread aktiviert werden, da diese sie einschließen.

       undefined
              Diese Einstellung (standardmäßig deaktiviert) fügt -fsanitize=undefined zu  CFLAGS,
              CXXFLAGS und LDFLAGS hinzu.

   Härtung
       Mehrere Kompilierzeit-Optionen (weiter unten beschrieben) können dazu verwandt werden, ein
       erstelltes  Programm  gegen  Speicherverfälschungsangriffe  zu  härten,  oder  zusätzliche
       Warnungsmeldungen  während  der  Übersetzung auszugeben. Sie werden für Architekturen, die
       diese unterstützen, standardmäßig aktiviert; die Ausnahmen sind unten angegeben.

       format Diese Einstellung (standardmäßig aktiviert) fügt  -Wformat  -Werror=format-security
              zu  CFLAGS,  CXXFLAGS  CXXFLAGS,  OBJCFLAGS  und OBJCXXFLAGS hinzu. Damit wird über
              inkorrekte Formatzeichenkettenverwendungen gewarnt und zu einem Fehler führen, wenn
              Formatfunktionen    deart    verwandt    werden,    dass   daraus   ein   mögliches
              Sicherheitsproblem werden könnte. Derzeit warnt dies über Aufrufe auf  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önnte  ein Sicherheitsproblem sein, falls die Formatzeichenkette aus
              einer unvertrauenswürdigen Eingabe stammt und ‚%n’ enthält.

       fortify
              Diese Einstellung (standardmäßig aktiviert) fügt  -D_FORTIFY_SOURCE=2  zu  CPPFLAGS
              hinzu. Während der Code-Erstellung hat der Compiler umfangreiche Informationen über
              Puffergrößen    (wo    möglich)     und     versucht,     unsichere     unbegrenzte
              Pufferfunktionsaufrufe  durch  längenbegrenzte  zu  ersetzen. Das ist besonders für
              alten,  verkramten  Code  nützlich.  Zusätzlich   werden   Formatzeichenketten   in
              schreibbarem  Speicher,  die  ‚%n’  enthalten,  blockiert. Falls eine Anwendung von
              solchen  Formatzeichenketten  abhängt,  müssen  dafür  andere  Lösungsmöglichkeiten
              gefunden werden.

              Beachten  Sie,  dass  die  Quellen auch mit -O1 oder höher übersetzt werden müssen,
              damit diese Option einen Effekt hat. Falls die Umgebungsvariable  DEB_BUILD_OPTIONS
              noopt enthält, dann wird die Unterstützung von fortify aufgrund neuer Warnungen von
              Glibc 2.16 und neuer deaktiviert.

       stackprotector
              Diese  Einstellung  (standardmäßig  aktiviert  falls   stackprotectorstrong   nicht
              verwandt   wird)   fügt   -fstack-protector  --param=ssp-buffer-size=4  zu  CFLAGS,
              CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS und  FCFLAGS  hinzu.  Dies  fügt
              Sicherheitsprüfungen  gegen  die Überschreibung des Stapelspeichers (Stacks) hinzu.
              Damit werden viele mögliche Code-Einfügeangriffe zu Abbruchsituationen.  Im  besten
              Fall  werden damit Code-Einfügungsangriffe zu Diensteverweigerungsangriffen oder zu
              keinen Problemen (abhängig von der Anwendung).

              Diese Funktionalität benötigt das Linken mit Glibc (oder einem anderen Anbieter von
              __stack_chk_fail).  Sie  muss  daher  deaktiviert  werden,  wenn mit -nostdlib oder
              -ffreestanding oder Ähnlichem gebaut wird.

       stackprotectorstrong
              Diese  Einstellung  (standardmäßig  aktiviert)  fügt  -fstack-protector-strong   zu
              CFLAGS,  CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS und FCFLAGS hinzu. Dies
              ist eine stärkere Variante von stackprotector allerdings ohne signifikante Einbußen
              bei der Leistung.

              Deaktivierung von stackprotector deaktiviert auch diese Einstellung.

              Diese  Funktionalität  stellt  die  gleichen  Anforderungen  wie stackprotector und
              benötigt zusätzlich Gcc 4.9 oder neuer.

       relro  Diese Einstellung (standardmäßig aktiviert) fügt  -Wl,-z,relro  zu  LDFLAGS  hinzu.
              Während  des  Ladens des Programms müssen mehrere ELF-Speicherabschnitte vom Binder
              (Linker) geschrieben werden. Diese Einstellung signalisiert dem Ladeprogramm, diese
              Abschnitte  in  nur-Lese-Zugriff  zu  ändern,  bevor  die Steuerung an das Programm
              übergeben wird. Insbesondere verhindert dies GOT-Überschreibeangriffe. Falls  diese
              Option deaktiviert ist, wird auch bindnow deaktiviert.

       bindnow
              Diese  Einstellung  (standardmäßig  deaktiviert)  fügt -Wl,-z,now zu LDFLAGS hinzu.
              Während des Ladens des Programms werden alle dynamischen Symbole  aufgelöst,  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.13 ohne Vorgabe und standardmäßig von GCC auf den
              Debian-Architekturen    Amd64,   Arm64,   Armel,   Armhf,   I386,   Kfreebsd-amd64,
              Kfreebsd-i386,  Mips,  Mipsel,  Mips64el,  PPC64el,  S390x,   Sparc   und   Sparc64
              hinzugefügt) fügt die benötigten Optionen mittels GCC-Spec-Dateien hinzu, falls sie
              zum Aktivieren oder Deaktivieren von PIE benötigt werden. Falls aktiviert  und  von
              GCC hinzugefügt, ergänzt nichts. Wenn aktiviert und nicht von GCC hinzugefügt, fügt
              -fPIE zu CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS,  GCJFLAGS,  FFLAGS  und  FCFLAGS
              hinzu  und  -fPIE  -pie  zu LDFLAGS. Wenn deaktiviert und von GCC hinzugefügt, fügt
              -fno-PIE zu CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS und  FCFLAGS
              hinzu und -fno-PIE -no-pie zu LDFLAGS.

              »Position Independent Executable« (positionsunabhängige Programme) werden benötigt,
              um  »Address  Space  Layout   Randomization«   (Bereitstellung   eines   zufälligen
              Adressbereichlayouts)  auszunutzen,  der von einigen Kernelversionen bereitgestellt
              wird. Während ASLR bereits für  Datenbereiche  auf  dem  Stapel  (Stack)  und  Heap
              erzwungen  werden  kann (brk und mmap), müssen die Codebereiche positionsunabhängig
              übersetzt werden. Laufzeitbibliotheken machen dies bereits  (-fPIC),  so  dass  sie
              ASLR  automatisch  erhalten,  aber  Programm-.text-Regionen  müssen  mit PIE gebaut
              werden, um ASLR zu  erhalten.  Wenn  dies  passiert,  sind  ROP-  (Return  Oriented
              Programming) Angriffe sehr viel schwerer durchzuführen, da es keine statischen Orte
              mehr gibt,  zu  denen  während  eines  Speicherverfälschungsangriffs  hingesprungen
              werden könnte.

              PIE ist nicht mit -fPIC kompatibel, daher muss im Allgemeinen Vorsicht beim Bau von
              Laufzeitbibliotheksobjekten  walten  gelassen  werden.  Da  aber  der   ausgegebene
              PIE-Schalter  mittels  GCC-Spezifikationsdateien  hinzugefügt wird, sollte es immer
              sicher sein, sie  bedingungslos  zu  setzen,  unabhängig  von  dem  Objekttyp,  der
              übersetzt oder gelinkt wird.

              Statische   Bibliotheken   können   von   jedem  Programm  und  anderen  statischen
              Bibliotheken benutzt  werden.  Abhängig  von  den  zum  Kompilieren  aller  Objekte
              innerhalb   einer   statischen   Bibliothek   verwandten   Schaltern  können  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
              GGC-Spezifikations-Hinzufügung  zu  umgehen,  müssen mehrere Dinge beachtet werden.
              Die bedingungslose und explizite  Übergabe  von  -fPIE,  -fpie  oder  -pie  an  das
              Bausystem  mit  Libtool  ist  sicher,  da  diese  Schalter  entfernt  werden,  wenn
              Laufzeit-Bibliotheken gebaut werden.  Andernfalls  könnte  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 übergeben wird (so dass es jedes frühere -PIE
              außer Kraft setzen kann) und -shared  als  letztes  an  Link-Schalter  wie  LDFLAGS
              übergeben  wird  (so  dass es jedes frühere -pie außer Kraft setzen kann). Hinweis:
              Das sollte mit der Vorgabe-GCC-Spezifikationsmaschinerie nicht notwendig sein.

              Zusätzlich können auf einigen Architekturen mit sehr wenigen Registern (dazu gehört
              aber   i386   nicht   mehr,   seitdem   in   GCC   >=  5  Optimierungen  erfolgten)
              Leistungsverluste von bis zu 15%  in  sehr  text-Segment-lastigen  Anwendungsfällen
              auftreten,  da  PIE  über  allgemeine  Register  implementiert  ist; in den meisten
              Anwendungsfällen sind dies weniger  als  1%.  Architekturen  mit  mehr  allgemeinen
              Registern (z.B. Amd64) erfahren nicht diese Schlimmstfall-Strafe.

   Reproduzierbarkeit
       Die  Kompilierzeit-Optionen  (weiter  unten  beschrieben) können dazu verwandt werden, die
       Reproduzierbarkeit  zu  verbessern  oder   zusätzliche   Warnungsmeldungen   während   der
       Übersetzung   auszugeben.   Sie   werden   für   Architekturen,  die  diese  unterstützen,
       standardmäßig aktiviert; die Ausnahmen sind unten angegeben.

       timeless
              Diese (standardmäßig aktivierte) Einstellung fügt -Wdate-time  zu  CPPFLAGS  hinzu.
              Dies  führt  zu  Warnungen,  wenn  die  Makros __TIME__, __DATE__ und __TIMESTAMP__
              verwandt werden.

       fixdebugpath
              Diese Einstellung (standardmäßig aktiviert) fügt -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ührt
              dazu, dass der Baupfad aus allen erstellten Debug-Symbolen entfernt wird.

UMGEBUNG

       Es  gibt  zwei  Gruppen  von Umgebungsvariablen, die den gleichen Vorgang durchführen. Der
       erste (DEB_Schalter_Vorg) sollte niemals innerhalb von debian/rules  verwandt  werden.  Er
       ist  für  Benutzer  gedacht,  die  das  Quellpaket  mit  anderen Bauschaltern erneut bauen
       möchten. Der zweite Satz  (DEB_Schalter_MAINT_Vorg)  sollte  nur  durch  Paketbetreuer  in
       debian/rules verwandt werden, um die entstehenden Bauschalter zu ändern.

       DEB_Schalter_SET
       DEB_Schalter_MAINT_SET
              Diese  Variable  kann zum Erzwingen des für Schalter zurückgegebenen 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ückgelieferten Schaltern
              entfernt werden.

       DEB_Schalter_APPEND
       DEB_Schalter_MAINT_APPEND
              Diese Variable kann zum Anhängen ergänzender Optionen zum Wert,  der  von  Schalter
              zurückgegeben wird, verwandt werden.

       DEB_Schalter_PREPEND
       DEB_Schalter_MAINT_PREPEND
              Diese  Variable  kann  zum  Voranstellen  ergänzender  Optionen  zum  Wert, der von
              Schalter zurückgegeben wird, verwandt werden.

       DEB_BUILD_OPTIONS
       DEB_BUILD_MAINT_OPTIONS
              Diese  Variablen  können  von  Benutzern  oder  Betreuern  zum  Deaktivieren   oder
              Aktivieren  verschiedener  Bereichsfunktionalitäten benutzt werden, die Bauschalter
              beeinflussen. Die Variable DEB_BUILD_MAINT_OPTIONS setzt jede  Einstellung  in  den
              Funktionalitätsbereichen  DEB_BUILD_OPTIONS  außer  Kraft.  Lesen Sie den Abschnitt
              FUNKTIONALITÄTSBEREICHE für 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äten wie
              fixdebugpath verwandt wird, so dass sie  durch  den  Aufrufenden  gesteuert  werden
              können. Diese Variable ist derzeit spezifisch für Debian und Derivative.

DATEIEN

   Konfigurationsdateien
       /etc/dpkg/buildflags.conf
              Systemweite Konfigurationsdatei

       $XDG_CONFIG_HOME/dpkg/buildflags.conf oder
       $HOME/.config/dpkg/buildflags.conf
              Benutzer-Konfigurationsdatei

   Paketierungsunterstützung
       /usr/share/dpkg/buildflags.mk
              Makefile-Schnipsel,   das   alle  von  dpkg-buildflags  unterstützten  Schalter  in
              Variablen laden (und optional exportieren) wird. (seit Dpkg 1.16.1)

BEISPIELE

       Um Bauschalter an eine Baubefehl in einer Makefile zu übergeben:

           $(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 übergeben 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ötigten  Bauschalter,  die  an  das  Bausystem  weitergegeben  werden
       sollen,  abzufragen.  Beachten  Sie, dass ältere 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öglicht.

       Für  Pakete mit Autoconf-artigen Bausystemen können Sie die relevanten Optionen direkt wie
       oben gezeigt an Configure oder make(1) übergeben.

       Für andere Bausysteme oder wenn Sie feingranularere Steuerung benötigen (welcher  Schalter
       wo   weitergegeben  wird),  können  Sie  --get  verwenden.  Oder  Sie  können  stattdessen
       buildflags.mk einbinden, das sich um  den  Aufruf  von  dpkg-buildflags  kümmert  und  die
       Bauschalter in Make-Variablen speichert.

       Falls Sie alle Bauschalter in die Umgebung exportieren möchten (wo sie dann vom Baussystem
       eingelesen werden können):

           DPKG_EXPORT_BUILDFLAGS = 1
           include /usr/share/dpkg/buildflags.mk

       Für  zusätzliche  Steuerung  was  exportiert  wird,  können  Sie  die  Variablen   manuell
       exportieren (da keine standardmäßig exportiert werden):

           include /usr/share/dpkg/buildflags.mk
           export CPPFLAGS CFLAGS LDFLAGS

       Und natürlich können Sie die Schalter manuell an Befehle weitergeben:

           include /usr/share/dpkg/buildflags.mk
           build-arch:
                $(CC) -o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)

ÜBERSETZUNG

       Die    deutsche    Übersetzung    wurde    2004,    2006-2017    von    Helge   Kreutzmann
       <debian@helgefjell.de>, 2007 von  Florian  Rehnisch  <eixman@gmx.de>  und  2008  von  Sven
       Joachim  <svenjoac@gmx.de>  angefertigt.  Diese Übersetzung ist Freie Dokumentation; lesen
       Sie die GNU General Public License Version 2 oder neuer für die Kopierbedingungen. Es gibt
       KEINE HAFTUNG.