summaryrefslogtreecommitdiffstats
path: root/man/de/dpkg-buildflags.pod
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--man/de/dpkg-buildflags.pod803
1 files changed, 803 insertions, 0 deletions
diff --git a/man/de/dpkg-buildflags.pod b/man/de/dpkg-buildflags.pod
new file mode 100644
index 0000000..1a32a5e
--- /dev/null
+++ b/man/de/dpkg-buildflags.pod
@@ -0,0 +1,803 @@
+
+ *****************************************************
+ * GENERATED FILE, DO NOT EDIT *
+ * THIS IS NO SOURCE FILE, BUT RESULT OF COMPILATION *
+ *****************************************************
+
+This file was generated by po4a(7). Do not store it (in VCS, for example),
+but store the PO file used as source file by po4a-translate.
+
+In fact, consider this as a binary, and the PO file as a regular .c file:
+If the PO get lost, keeping this translation up-to-date will be harder.
+
+=encoding UTF-8
+
+=head1 BEZEICHNUNG
+
+dpkg-buildflags - liefert Bauschalter zum Einsatz beim Paketbau
+
+=head1 ÜBERSICHT
+
+B<dpkg-buildflags> [I<Option> …] [I<Befehl>]
+
+=head1 BESCHREIBUNG
+
+B<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:
+
+=over
+
+=item 1.
+
+systemweit mit B<%PKGCONFDIR%/buildflags.conf>
+
+=item 2.
+
+für den aktuellen Benutzer mit B<$XDG_CONFIG_HOME/dpkg/buildflags.conf>,
+wobei B<$XDG_CONFIG_HOME> standardmäßig auf B<$HOME/.config> gesetzt ist
+
+=item 3.
+
+temporär durch den Benutzer mittels Umgebungsvariablen (siehe Abschnitt
+B<UMGEBUNG>)
+
+=item 4.
+
+dynamisch durch den Paketverwalter mittels Umgebungsvariablen, die über
+B<debian/rules> gesetzt wurden (siehe Abschnitt B<UMGEBUNG>)
+
+=back
+
+Die Konfigurationsdateien können vier Arten von Direktiven enthalten:
+
+=over
+
+=item B<SET> I<Schalter Wert>
+
+Überschreibt den Schalter namens I<Schalter>, um den Wert I<Wert> zu
+erhalten.
+
+=item B<STRIP> I<Schalter Wert>
+
+Aus dem Schalter namens I<Schalter> alle in I<Wert> aufgeführten Bauschalter
+entfernen
+
+=item B<APPEND> I<Schalter Wert>
+
+Erweitert den Schalter namens I<Schalter> durch Anhängen der in I<Wert>
+angegebenen Optionen. Ein Leerzeichen wird dem angehängten Wert
+vorangestellt, falls der derzeitige Wert nicht leer ist.
+
+=item B<PREPEND> I<Schalter Wert>
+
+Erweitert den Schalter namens I<Schalter> durch Voranstellen der in I<Wert>
+angegebenen Optionen. Ein Leerzeichen wird dem vorangestellten Wert
+angehängt, falls der derzeitige Wert nicht leer ist.
+
+=back
+
+Die Konfigurationsdateien können Kommentare in Zeilen enthalten, die mit
+einer Raute (#) beginnen. Leere Zeilen werden auch ignoriert.
+
+=head1 BEFEHLE
+
+=over
+
+=item B<--dump>
+
+Gibt auf der Standardausgabe alle Kompilierschalter und ihre Werte aus. Es
+wird ein Schalter pro Zeile ausgegeben, wobei der Wert durch ein
+Gleichheitszeichen („I<Schalter>=I<Wert>“) abgetrennt wird. Dies ist die
+Standardaktion.
+
+=item B<--list>
+
+Gibt die Liste der vom aktuellen Lieferanten unterstützten Schalter (einen
+pro Zeile) aus. Lesen Sie den Abschnitt B<UNTERSTÜTZTE SCHALTER> für weitere
+Informationen über sie.
+
+=item B<--status>
+
+Zeigt alle Informationen an, die zum Verständnis des Verhaltens von
+B<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 ausgegeben.
+
+Dies ist zur Ausführung in B<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.
+
+=item B<--export=>I<Format>
+
+Gibt auf der Standardausgabe Befehle aus, die dazu verwandt werden können,
+alle Kompilierschalter für bestimmte Werkzeuge zu exportieren. Falls der
+Wert von I<Format> nicht angegeben wird, wird B<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:
+
+=over
+
+=item B<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.
+
+=item B<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.
+
+=item B<configure> (konfiguriert)
+
+Dies ist ein historischer Alias für B<cmdline>.
+
+=item B<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 B<include>-Direktive ausgewertet werden.
+
+=back
+
+=item B<--get> I<Schalter>
+
+Gibt den Wert des Schalters auf der Standardausgabe aus. Beendet sich mit 0,
+falls der Schalter bekannt ist, andernfalls mit 1.
+
+=item B<--origin> I<Schalter>
+
+Gibt den Ursprung des von B<--get> gelieferten Werts aus. Beendet sich mit
+0, falls der Schalter bekannt ist, andernfalls mit 1. Der Ursprung kann
+einer der folgenden Werte sein:
+
+=over
+
+=item B<vendor>
+
+der ursprünglich vom Lieferanten gesetzte Schalter wird zurückgeliefert
+
+=item B<system>
+
+der Schalter wurde durch eine systemweite Konfiguration gesetzt/verändert
+
+=item B<user>
+
+der Schalter wurde durch eine benutzerspezifische Konfiguration
+gesetzt/verändert
+
+=item B<env>
+
+der Schalter wurde durch eine umgebungsspezifische Konfiguration
+gesetzt/verändert
+
+=back
+
+=item B<--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
+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
+
+=item B<--query-features> I<Bereich>
+
+Gibt die Funktionalitäten, die für den übergebenen Bereich aktiviert sind,
+aus (seit Dpkg 1.16.2). Die einzigen unter Debian und abgeleiteten
+Distributionen derzeit erkannten Bereiche sind B<future>, B<qa>,
+B<reproducible>, B<sanitize> und B<hardening>. Lesen Sie den Abschnitt
+B<FUNKTIONALITÄTSBEREICHE> für 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ät. Beispiel:
+
+ Feature: pie
+ Enabled: yes
+
+ Feature: stackprotector
+ Enabled: yes
+
+=item B<--help>
+
+Zeigt einen Hinweis zum Aufruf und beendet das Programm.
+
+=item B<--version>
+
+Gibt die Version aus und beendet das Programm.
+
+=back
+
+=head1 UNTERSTÜTZTE SCHALTER
+
+=over
+
+=item B<CFLAGS>
+
+Optionen für den C-Compiler. Der vom Lieferanten gesetzte Standardwert
+enthält I<-g> und die Standard-Optimierungsstufe (normalerweise I<-O2> oder
+B<-O0>, falls die Umgebungsvariable B<DEB_BUILD_OPTIONS> I<noopt>
+definiert).
+
+=item B<CPPFLAGS>
+
+Optionen für den C-Präprozessor. Standardwert: leer.
+
+=item B<CXXFLAGS>
+
+Optionen für den C++-Compiler. Identisch zu B<CFLAGS>.
+
+=item B<OBJCFLAGS>
+
+Optionen für den Objective-C-Compiler. Identisch zu B<CFLAGS>.
+
+=item B<OBJCXXFLAGS>
+
+Optionen für den Objective-C++-Compiler. Identisch zu B<CXXFLAGS>.
+
+=item B<GCJFLAGS>
+
+Optionen für den GNU-Java-Compiler (gcj). Eine Untermenge von B<CFLAGS>.
+
+=item B<DFLAGS>
+
+Optionen für den D-Compiler (ldc oder gdc). Seit Dpkg 1.20.6.
+
+=item B<FFLAGS>
+
+Optionen für den Fortran-77-Compiler. Eine Untermenge von B<CFLAGS>.
+
+=item B<FCFLAGS>
+
+Optionen für den Fortran-9x-Compiler. Identisch zu B<FFLAGS>.
+
+=item B<LDFLAGS>
+
+Optionen, die beim Linken von Programmen oder Laufzeitbibliotheken an den
+Compiler weitergegeben werden (falls der Linker direkt aufgerufen wird,
+müssen B<-Wl> und B<,> aus diesen Optionen entfernt werden). Standardmäßig
+leer.
+
+=back
+
+Neue Schalter können in Zukunft hinzugefügt werden, falls die Notwendigkeit
+aufkommt (beispielsweise, um weitere Sprachen zu unterstützen).
+
+=head1 FUNKTIONALITÄTSBEREICHE
+
+Jede Bereichsfunktionalität kann durch den entsprechenden Bereichswert in
+den Umgebungsvariablen B<DEB_BUILD_OPTIONS> und B<DEB_BUILD_MAINT_OPTIONS>
+mit den ‚B<+>’- und ‚B<->’-Schaltern aktiviert und deaktiviert werden. Soll
+beispielsweise für B<hardening> die „pie“-Funktionalität aktiviert und die
+„fortify“-Funktionalität deaktiviert werden, können Sie Folgendes in
+B<debian/rules> verwenden:
+
+ export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify
+
+Die spezielle Funktionalität B<all> (in allen Bereichen gültig) kann dazu
+verwandt werden, alle Bereichsfunktionalitäten auf einmal zu aktivieren oder
+zu deaktivieren. Um daher alles im Bereich B<hardening> zu deaktivieren und
+nur „format“ und „fortify“ zu aktiveren, kann Folgendes eingesetzt werden:
+
+ export DEB_BUILD_MAINT_OPTIONS=hardening=-all,+format,+fortify
+
+=head2 future (Zukunft)
+
+Mehrere Optionen zur Kompilierung (Details weiter unten) können verwandt
+werden, um Funktionen zu aktivieren, die standardmäßig aktiviert sein
+sollten, dies aber aus Rückwärtskompatibilitätsgründen nicht sein können.
+
+=over
+
+=item B<lfs>
+
+Diese Einstellung (standardmäßig deaktiviert) aktiviert die Unterstützung
+für große Dateien auf 32-Bit-Architekturen, bei denen ihre ABI diese
+Unterstützung nicht standardmäßig aktiviert, indem B<-D_LARGEFILE_SOURCE
+-D_FILE_OFFSET_BITS=64> zu B<CPPFLAGS> hinzugefügt wird.
+
+=back
+
+=head2 qa (QS)
+
+Mehrere Optionen zur Kompilierung (Details weiter unten) können verwandt
+werden, um Probleme im Quellcode oder im Bausystem zu erkennen.
+
+=over
+
+=item B<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 B<CFLAGS> und
+B<CXXFLAGS>, wobei die Schalter auf B<-Werror=array-bounds>,
+B<-Werror=clobbered>, B<-Werror=implicit-function-declaration> und
+B<-Werror=volatile-register-var> gesetzt werden.
+
+=item B<canary>
+
+Diese Einstellung (standardmäßig deaktiviert) fügt
+Pseudo-Zufallsbarrieren-Optionen zu den Bauschaltern hinzu, so dass die
+Bauprotokolle überprüft werden können, wie die Bauschalter weitergereicht
+werden. Dies erlaubt, Auslassungen in den normalen Bauschaltereinstellungen
+zu finden. Derzeit werden nur die Schalter B<CPPFLAGS>, B<CFLAGS>,
+B<OBJCFLAGS>, B<CXXFLAGS> und B<OBJCXXFLAGS> unterstützt, wobei die Schalter
+auf B<-D__DEB_CANARY_>I<Schalter>_I<Zufallskennung>B<__> gesetzt werden, und
+B<LDFLAGS>, das auf B<-Wl,-z,deb-canary->I<Zufallskennung> gesetzt wird.
+
+=back
+
+=head2 sanitize (Bereinigung)
+
+Mehrere Kompilierzeit-Optionen (nachfolgend 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. B<Hinweis>: Diese Optionen sollten B<nicht> beim Bauen im
+Produktivbetrieb benutzt werden, da sie die Zuverlässigkeit von
+spezifikationsgetreuem Code, die Sicherheit oder sogar die Funktionalität
+reduzieren bzw. negativ beeinflussen können.
+
+=over
+
+=item B<address>
+
+Diese Einstellung (standardmäßig deaktiviert) fügt B<-fsanitize=address> zu
+B<LDFLAGS> und B<-fsanitize=address -fno-omit-frame-pointer> zu B<CFLAGS>
+und B<CXXFLAGS> hinzu.
+
+=item B<thread>
+
+Diese Einstellung (standardmäßig deaktiviert) fügt B<-fsanitize=thread> zu
+B<CFLAGS>, B<CXXFLAGS> und B<LDFLAGS> hinzu.
+
+=item B<leak>
+
+Diese Einstellung (standardmäßig deaktiviert) fügt B<-fsanitize=leak> zu
+B<LDFLAGS> hinzu. Sie wird automatisch deaktiviert, falls entweder die
+Funktionalitäten B<address> oder B<thread> aktiviert werden, da diese sie
+einschließen.
+
+=item B<undefined>
+
+Diese Einstellung (standardmäßig deaktiviert) fügt B<-fsanitize=undefined>
+zu B<CFLAGS>, B<CXXFLAGS> und B<LDFLAGS> hinzu.
+
+=back
+
+=head2 hardening (Härtung)
+
+Mehrere Kompilierzeit-Optionen (nachfolgend 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.
+
+=over
+
+=item B<format>
+
+Diese Einstellung (standardmäßig aktiviert) fügt B<-Wformat
+-Werror=format-security> zu B<CFLAGS>, B<CXXFLAGS> B<CXXFLAGS>, B<OBJCFLAGS>
+und B<OBJCXXFLAGS> hinzu. Damit erhalten Sie Warnungen bei inkorrekter
+Verwendung von Formatzeichenketten. Es wird zu einem Fehler führen, wenn
+Formatfunktionen deart verwandt werden, dass daraus ein mögliches
+Sicherheitsproblem werden könnte. Derzeit warnt dies bei Aufrufen von
+B<printf>- und B<scanf>-Funktionen, bei denen die Formatzeichenkette nicht
+eine reine Zeichenkette ist und es keine Formatargumente gibt, wie in
+B<printf(foo);> statt B<printf("%s", foo);>. Dies könnte ein
+Sicherheitsproblem sein, falls die Formatzeichenkette aus einer nicht
+vertrauenswürdigen Eingabe stammt und „%n“ enthält.
+
+=item B<fortify>
+
+Diese Einstellung (standardmäßig aktiviert) fügt B<-D_FORTIFY_SOURCE=2> zu
+B<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 B<-O1> oder höher übersetzt werden
+müssen, damit diese Option einen Effekt hat. Falls die Umgebungsvariable
+B<DEB_BUILD_OPTIONS> I<noopt> enthält, dann wird die Unterstützung von
+B<fortify> aufgrund neuer Warnungen von Glibc 2.16 und neuer deaktiviert.
+
+=item B<stackprotector>
+
+Diese Einstellung (standardmäßig aktiviert falls „stackprotectorstrong“
+nicht verwandt wird) fügt B<-fstack-protector --param=ssp-buffer-size=4> zu
+B<CFLAGS>, B<CXXFLAGS>, B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS>
+und B<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 B<__stack_chk_fail>). Sie muss daher deaktiviert werden, wenn
+mit B<-nostdlib> oder B<-ffreestanding> oder Ähnlichem gebaut wird.
+
+=item B<stackprotectorstrong>
+
+Diese Einstellung (standardmäßig aktiviert) fügt B<-fstack-protector-strong>
+zu B<CFLAGS>, B<CXXFLAGS>, B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>,
+B<FFLAGS> und B<FCFLAGS> hinzu. Dies ist eine stärkere Variante von
+B<stackprotector>, allerdings ohne signifikante Einbußen bei der Leistung.
+
+Deaktivierung von B<stackprotector> deaktiviert auch diese Einstellung.
+
+Diese Funktionalität stellt die gleichen Anforderungen wie B<stackprotector>
+und benötigt zusätzlich GCC 4.9 oder neuer.
+
+=item B<relro>
+
+Diese Einstellung (standardmäßig aktiviert) fügt B<-Wl,-z,relro> zu
+B<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 B<bindnow> deaktiviert.
+
+=item B<bindnow>
+
+Diese Einstellung (standardmäßig deaktiviert) fügt B<-Wl,-z,now> zu
+B<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 B<relro> oben). Diese Option kann nicht aktiviert werden,
+falls B<relro> nicht aktiviert ist.
+
+=item B<pie>
+
+Diese Einstellung (seit Dpkg 1.18.23 ohne globale Vorgabe, da sie jetzt
+standardmäßig 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ügt, falls benötigt, die benötigten Optionen, um PIE zu
+aktivieren oder zu deaktivieren, über GCC-Spezifikationsdateien hinzu,
+abhängig davon, ob GCC auf diesen Architekturen die Schalter selbst
+einspeist oder nicht. Wenn die Einstellung aktiviert ist und GCC den
+Schalter einspeist, fügt dies nichts hinzu. Wenn die Einstellung aktiviert
+ist und GCC den Schalter nicht einspeist, dann fügt es B<-fPIE> (mittels
+I<%PKGDATADIR%/pie-compiler.specs>) zu B<CFLAGS>, B<CXXFLAGS>, B<OBJCFLAGS>,
+B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS> und B<FCFLAGS> und B<-fPIE -pie>
+(mittels I<%PKGDATADIR%/pie-link.specs>) zu B<LDFLAGS> hinzu. Wenn die
+Einstellung deaktiviert ist und GCC den Schalter einspeist, dann fügt es
+B<-fno-PIE> (mittels I<%PKGDATADIR%/no-pie-compile.specs>) zu B<CFLAGS>,
+B<CXXFLAGS>, B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS> und
+B<FCFLAGS> und B<-fno-PIE -no-pie> (mittels
+I<%PKGDATADIR%/no-pie-link.specs>) zu B<LDFLAGS> hinzu.
+
+„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 (B<-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 zu B<-fPIC> kompatibel, daher müssen Sie beim Bau von
+Laufzeitbibliotheksobjekten im Allgemeinen Vorsicht walten lassen. 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:
+
+=over
+
+=item keine
+
+Kann weder in ein PIE-Programm noch in eine Laufzeitbibliothek gelinkt
+werden.
+
+=item B<-fPIE>
+
+Kann in jedes Programm, aber nicht in eine Laufzeitbibliothek gelinkt werden
+(empfohlen).
+
+=item B<-fPIC>
+
+Kann in jedes Programm und jede Laufzeitbibliothek gelinkt werden.
+
+=back
+
+Falls es notwendig ist, diese Schalter manuell zu setzen und die
+GCC-Spezifikations-Hinzufügung zu umgehen, müssen mehrere Dinge beachtet
+werden. Die bedingungslose und explizite Übergabe von B<-fPIE>, B<-fpie>
+oder B<-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 B<-fPIC> immer als Letztes an die Kompilierungsschalter
+wie B<CFLAGS> übergeben wird (so dass es jedes frühere B<-PIE> außer Kraft
+setzen kann) und B<-shared> als Letztes an Link-Schalter wie B<LDFLAGS>
+übergeben wird (so dass es jedes frühere B<-pie> außer Kraft setzen
+kann). B<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 E<gt>= 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.
+
+=back
+
+=head2 reproducible (Reproduzierbarkeit)
+
+Die Kompilierzeit-Optionen (nachfolgend 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.
+
+=over
+
+=item B<timeless>
+
+Diese (standardmäßig aktivierte) Einstellung fügt B<-Wdate-time> zu
+B<CPPFLAGS> hinzu. Dies führt zu Warnungen, wenn die Makros B<__TIME__>,
+B<__DATE__> und B<__TIMESTAMP__> verwandt werden.
+
+=item B<fixfilepath>
+
+Diese Einstellung (standardmäßig aktiviert) fügt
+B<-ffile-prefix-map=>I<BUILDPATH>B<=.> zu B<CFLAGS>, B<CXXFLAGS>,
+B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS> und B<FCFLAGS> hinzu,
+wobei B<BUILDPATH> auf das oberste Verzeichnis des bauenden Pakets gesetzt
+wird. Dies führt dazu, dass der Baupfad aus allen erstellten Dateien
+entfernt wird.
+
+Falls sowohl B<fixdebugpath> als auch B<fixfilepath> gesetzt sind, hat diese
+Option Vorrang, da sie eine Obermenge erster ist.
+
+=item B<fixdebugpath>
+
+Diese Einstellung (standardmäßig aktiviert) fügt
+B<-fdebug-prefix-map=>I<BUILDPATH>B<=.> zu B<CFLAGS>, B<CXXFLAGS>,
+B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS> und B<FCFLAGS> hinzu,
+wobei B<BUILDPATH> auf das oberste Verzeichnis des bauenden Pakets gesetzt
+wird. Dies führt dazu, dass der Baupfad aus allen erstellten Debug-Symbolen
+entfernt wird.
+
+=back
+
+=head1 UMGEBUNG
+
+Es gibt zwei Gruppen von Umgebungsvariablen, die den gleichen Vorgang
+durchführen. Der erste (DEB_I<Schalter>_I<Vorg>) sollte niemals innerhalb
+von B<debian/rules> verwandt werden. Er ist für Benutzer gedacht, die das
+Quellpaket mit anderen Bauschaltern erneut bauen möchten. Der zweite Satz
+(DEB_I<Schalter>_MAINT_I<Vorg>) sollte nur durch Paketbetreuer in
+B<debian/rules> verwandt werden, um die entstehenden Bauschalter zu ändern.
+
+=over
+
+=item B<DEB_>I<Schalter>B<_SET>
+
+=item B<DEB_>I<Schalter>B<_MAINT_SET>
+
+Diese Variable kann zum Erzwingen des für I<Schalter> zurückgegebenen Werts
+verwandt werden.
+
+=item B<DEB_>I<Schalter>B<_STRIP>
+
+=item B<DEB_>I<Schalter>B<_MAINT_STRIP>
+
+Diese Variable kann zum Bereitstellen einer durch Leerzeichen getrennten
+Liste von Optionen verwandt werden, die aus dem Satz von I<Schalter>
+zurückgelieferten Schaltern entfernt werden.
+
+=item B<DEB_>I<Schalter>B<_APPEND>
+
+=item B<DEB_>I<Schalter>B<_MAINT_APPEND>
+
+Diese Variable kann zum Anhängen ergänzender Optionen zum Wert, der von
+I<Schalter> zurückgegeben wird, verwandt werden.
+
+=item B<DEB_>I<Schalter>B<_PREPEND>
+
+=item B<DEB_>I<Schalter>B<_MAINT_PREPEND>
+
+Diese Variable kann zum Voranstellen ergänzender Optionen zum Wert, der von
+I<Schalter> zurückgegeben wird, verwandt werden.
+
+=item B<DEB_BUILD_OPTIONS>
+
+=item B<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 B<DEB_BUILD_MAINT_OPTIONS> setzt jede
+Einstellung in den Funktionalitätsbereichen B<DEB_BUILD_OPTIONS> außer
+Kraft. Lesen Sie den Abschnitt B<FUNKTIONALITÄTSBEREICHE> für weitere
+Details.
+
+=item B<DEB_VENDOR>
+
+Diese Einstellung definiert den aktuellen Lieferanten. Falls nicht gesetzt,
+wird er aus B<%PKGCONFDIR%/origins/default> ermittelt.
+
+=item B<DEB_BUILD_PATH>
+
+Diese Variable setzt den Baupfad (seit Dpkg 1.18.8), der in Funktionalitäten
+wie B<fixdebugpath> verwandt wird, so dass sie durch den Aufrufenden
+gesteuert werden können. Diese Variable ist derzeit spezifisch für Debian
+und Derivative.
+
+=item B<DPKG_COLORS>
+
+Setzt den Farbmodus (seit Dpkg 1.18.5). Die derzeit unterstützten Werte
+sind: B<auto> (Vorgabe), B<always> und B<never>.
+
+=item B<DPKG_NLS>
+
+Falls dies gesetzt ist, wird es zur Entscheidung, ob Native Language
+Support, auch als Unterstützung für Internationalisierung (oder i18n)
+bekannt, aktiviert wird (seit Dpkg 1.19.0). Die akzeptierten Werte sind:
+B<0> und B<1> (Vorgabe).
+
+=back
+
+=head1 DATEIEN
+
+=head2 Konfigurationsdateien
+
+=over
+
+=item B<%PKGCONFDIR%/buildflags.conf>
+
+Systemweite Konfigurationsdatei
+
+=item B<$XDG_CONFIG_HOME/dpkg/buildflags.conf> oder
+
+=item B<$HOME/.config/dpkg/buildflags.conf>
+
+Benutzerkonfigurationsdatei
+
+=back
+
+=head2 Paketierungsunterstützung
+
+=over
+
+=item B<%PKGDATADIR%/buildflags.mk>
+
+Make-Steuerdateischnipsel, das alle von B<dpkg-buildflags> unterstützten
+Schalter in Variablen laden (und optional exportieren) wird. (seit Dpkg
+1.16.1)
+
+=back
+
+=head1 BEISPIELE
+
+Um Bauschalter an einen Baubefehl in einer Make-Steuerdatei zu übergeben:
+
+=over
+
+ $(MAKE) $(shell dpkg-buildflags --export=cmdline)
+
+ ./configure $(shell dpkg-buildflags --export=cmdline)
+
+=back
+
+Um Bauschalter in einem Shell-Skript oder Shell-Fragement zu setzen, kann
+B<eval> verwendet werden, um die Ausgabe zu interpretieren und die Schalter
+in die Umgebung zu exportieren:
+
+=over
+
+ eval "$(dpkg-buildflags --export=sh)" && make
+
+=back
+
+Oder die Positionsparameter zu setzen, die an einen Befehl übergeben werden
+sollen:
+
+=over
+
+ eval "set -- $(dpkg-buildflags --export=cmdline)"
+ for dir in a b c; do (cd $dir && ./configure "$@" && make); done
+
+=back
+
+=head2 Verwendung in debian/rules
+
+Sie sollten B<dpkg-buildflags> aufrufen oder B<buildflags.mk> in die Datei
+B<debian/rules> einbinden, um die benötigten Bauschalter, die an das
+Bausystem weitergegeben werden sollen, abzufragen. Beachten Sie, dass ältere
+Versionen von B<dpkg-buildpackage> (vor Dpkg 1.16.1) diese Variablen
+automatisch exportierten. Allerdings sollten Sie sich nicht darauf
+verlassen, da dies den manuellen Aufruf von B<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 B<make>(1) übergeben.
+
+Für andere Bausysteme oder wenn Sie feiner granulierte Steuerung benötigen
+(welcher Schalter wo weitergegeben wird), können Sie B<--get>
+verwenden. Oder Sie können stattdessen B<buildflags.mk> einbinden, das sich
+um den Aufruf von B<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 Bausystem eingelesen werden können):
+
+=over
+
+ DPKG_EXPORT_BUILDFLAGS = 1
+ include %PKGDATADIR%/buildflags.mk
+
+=back
+
+Für zusätzliche Steuerung, was exportiert wird, können Sie die Variablen
+manuell exportieren (da keine standardmäßig exportiert werden):
+
+=over
+
+ include %PKGDATADIR%/buildflags.mk
+ export CPPFLAGS CFLAGS LDFLAGS
+
+=back
+
+Und natürlich können Sie die Schalter manuell an Befehle weitergeben:
+
+=over
+
+ include %PKGDATADIR%/buildflags.mk
+ build-arch:
+ $(CC) -o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
+
+=back
+
+
+=head1 ÜBERSETZUNG
+
+Die deutsche Übersetzung wurde 2004, 2006-2020 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.