diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 09:40:31 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 09:40:31 +0000 |
commit | b86570f63e533abcbcb97c2572e0e5732a96307b (patch) | |
tree | cabc83be691530ae685c45a8bc7620ccc0e1ebdf /man/de/dpkg-buildflags.pod | |
parent | Initial commit. (diff) | |
download | dpkg-b86570f63e533abcbcb97c2572e0e5732a96307b.tar.xz dpkg-b86570f63e533abcbcb97c2572e0e5732a96307b.zip |
Adding upstream version 1.20.13.upstream/1.20.13upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man/de/dpkg-buildflags.pod')
-rw-r--r-- | man/de/dpkg-buildflags.pod | 803 |
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. |