EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

dpkg-buildflags – Online in der Cloud

Führen Sie dpkg-buildflags im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl dpkg-buildflags, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


dpkg-buildflags – gibt Build-Flags zurück, die während der Paketerstellung verwendet werden sollen

ZUSAMMENFASSUNG


dpkg-buildflags [zu erhalten...] [Befehl]

BESCHREIBUNG


dpkg-buildflags ist ein Tool zum Abrufen von Kompilierungsflags zur Verwendung während der Debian-Erstellung
Pakete. Die Standardflags werden vom Anbieter definiert, können jedoch erweitert/überschrieben werden
In vielen Wegen:

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

2. für den aktuellen Benutzer mit $XDG_CONFIG_HOME/dpkg/buildflags.conf woher
$XDG_CONFIG_HOME Standardmäßig ist $HOME/.config;

3. temporär durch den Benutzer mit Umgebungsvariablen (siehe Abschnitt );

4. dynamisch durch den Paketbetreuer mit Umgebungsvariablen, die über festgelegt werden
debian/regeln (siehe Sektion ).

Die Konfigurationsdateien können zwei Arten von Anweisungen enthalten:

SET Flagge Wert
Überschreiben Sie das genannte Flag Flagge den Wert haben Wert.

STREIFEN Flagge Wert
Streifen Sie die genannte Flagge ab Flagge alle in aufgeführten Build-Flags Wert.

ANHANG Flagge Wert
Erweitern Sie die benannte Flagge Flagge durch Anhängen der in angegebenen Optionen Wert. Ein Raum ist
Wird dem angehängten Wert vorangestellt, wenn der aktuelle Wert des Flags nicht leer ist.

PREPEND Flagge Wert
Erweitern Sie die benannte Flagge Flagge durch Voranstellen der in angegebenen Optionen Wert. Ein Raum ist
Wird an den vorangestellten Wert angehängt, wenn der aktuelle Wert des Flags nicht leer ist.

Die Konfigurationsdateien können Kommentare zu Zeilen enthalten, die mit einem Hash (#) beginnen. Leer
Zeilen werden ebenfalls ignoriert.

BEFEHLE


--entsorgen Gibt alle Kompilierungsflags und ihre Werte in der Standardausgabe aus. Es wird eine Flagge gedruckt
pro Zeile, getrennt von seinem Wert durch ein Gleichheitszeichen („Flagge=Wert“). Dies ist das
Standardaktion.

--aufführen Drucken Sie die Liste der vom aktuellen Anbieter unterstützten Flags (eines pro Zeile). Siehe die
UNTERSTÜTZT FLAGGEN Weitere Informationen dazu finden Sie im Abschnitt.

--Status
Zeigen Sie alle Informationen an, die zur Erklärung des Verhaltens von nützlich sein können
dpkg-buildflags (seit Dpkg 1.16.5): relevante Umgebungsvariablen, aktuell
Anbieter, Status aller Feature-Flags. Drucken Sie auch die resultierenden Compiler-Flags mit aus
ihre Herkunft.

Dies ist zum Ausführen vorgesehen debian/regeln, damit das Build-Protokoll übersichtlich bleibt
Trace der verwendeten Build-Flags. Dies kann hilfreich sein, um damit verbundene Probleme zu diagnostizieren
Them.

--export=Format
Ausgabe in Standardausgabebefehlen, die zum Exportieren der gesamten Zusammenstellung verwendet werden können
Flags für ein bestimmtes Tool. Wenn die Format Wert ist nicht gegeben, sh wird angenommen.
Es sind nur Kompilierungsflags enthalten, die mit einem Großbuchstaben beginnen, andere nicht
Es wird davon ausgegangen, dass sie nicht für die Umwelt geeignet sind. Unterstützte Formate:

sh Shell-Befehle zum Setzen und Exportieren aller Kompilierungsflags im
Umfeld. Die Flag-Werte werden in Anführungszeichen gesetzt, sodass die Ausgabe bereit ist
Auswertung durch eine Shell.

Befehlszeile
Argumente, die an die Befehlszeile eines Build-Programms übergeben werden, um alle zu verwenden
Kompilierungsflags (seit Dpkg 1.17.0). Die Flag-Werte werden in der Shell in Anführungszeichen gesetzt
Syntax.

konfigurieren
Dies ist ein Legacy-Alias ​​für Befehlszeile.

um Erstellen Sie Anweisungen zum Setzen und Exportieren aller Kompilierungsflags im
Umfeld. Die Ausgabe kann in ein Makefile-Fragment geschrieben und ausgewertet werden
Verwendung eines das Richtlinie.

--erhalten Flagge
Drucken Sie den Wert des Flags auf der Standardausgabe. Wird mit 0 beendet, wenn das Flag bekannt ist
andernfalls endet es mit 1.

--Ursprung Flagge
Gibt den Ursprung des von zurückgegebenen Werts aus --erhalten. Wird mit 0 beendet, wenn das Flag vorhanden ist
ist bekannt, andernfalls endet es mit 1. Der Ursprung kann einer der folgenden Werte sein:

Verkäufer das vom Anbieter gesetzte Original-Flag wird zurückgegeben;

System das Flag wird durch eine systemweite Konfiguration gesetzt/geändert;

Benutzer das Flag wird durch eine benutzerspezifische Konfiguration gesetzt/geändert;

env Das Flag wird durch eine umgebungsspezifische Konfiguration gesetzt/geändert.

--query-features Gesamtfläche unserer Sitzes
Gibt die für einen bestimmten Bereich aktivierten Funktionen aus (seit Dpkg 1.16.2). Die einzige
Derzeit anerkannte Bereiche zu Debian und Derivaten sind qa, reproduzierbar, reinigen
und HärtenFinden Sie in der FEATURE BEREICHE Weitere Informationen finden Sie im Abschnitt. Beendet mit 0, wenn die
Die Fläche ist bekannt, sonst endet sie mit 1.

Die Ausgabe erfolgt im RFC822-Format mit einem Abschnitt pro Feature. Zum Beispiel:

Besonderheit: Kuchen
Aktiviert: nein

Merkmal: Stapelschutz
Aktiviert: ja

--help Zeigen Sie die Verwendungsmeldung an und beenden Sie den Vorgang.

--Version
Version anzeigen und beenden.

UNTERSTÜTZT FLAGGEN


CFLAGS Optionen für den C-Compiler. Der vom Anbieter festgelegte Standardwert umfasst: -g und dem
Standardoptimierungsstufe (-O2 normalerweise, oder -O0 wenn die DEB_BUILD_OPTIONS
Umgebungsvariable definiert neinopt).

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

CXXFLAGS
Optionen für den C++-Compiler. Gleich wie CFLAGS.

OBJCFLAGS
Optionen für den Objective-C-Compiler. Gleich wie CFLAGS.

OBJCXXFLAGS
Optionen für den Objective C++-Compiler. Gleich wie CXXFLAGS.

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

FLAGGEN Optionen für den Fortran 77-Compiler. Eine Teilmenge von CFLAGS.

FCFLAGS
Optionen für den Fortran 9x-Compiler. Gleich wie FLAGGEN.

LDFLAGS
An den Compiler übergebene Optionen beim Verknüpfen ausführbarer Dateien oder gemeinsam genutzter Objekte (falls vorhanden).
Der Linker wird dann direkt aufgerufen -Wl und , müssen von diesen Optionen entfernt werden).
Standardwert: leer.

Bei Bedarf können in Zukunft neue Flags hinzugefügt werden (z. B. zur Unterstützung anderer).
Sprachen).

FEATURE BEREICHE


Jede Bereichsfunktion kann im aktiviert und deaktiviert werden DEB_BUILD_OPTIONS und
DEB_BUILD_MAINT_OPTIONS Bereichswert der Umgebungsvariablen mit dem '+'Und'-' Modifikator.
Zum Beispiel, um das zu aktivieren Härten Wählen Sie die Funktion „Kuchen“ und deaktivieren Sie die Funktion „Stärken“.
kann das machen debian/regeln:

export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify

Das Besondere alle (gültig in jedem Bereich) kann zum Aktivieren oder Deaktivieren aller Bereiche verwendet werden
Funktionen gleichzeitig. Dadurch wird alles in der deaktiviert Härten Bereich und Ermöglichung
Nur „formatieren“ und „festigen“ können erreicht werden mit:

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

qa
Mehrere Optionen zur Kompilierungszeit (siehe unten) können verwendet werden, um Probleme im zu erkennen
Quellcode oder Build-System.

Fehler Diese Einstellung (standardmäßig deaktiviert) fügt jede Warnoption hinzu, die zuverlässig erkennt
problematischer Quellcode. Die Warnungen sind fatal.

Kanarienvogel Diese Einstellung (standardmäßig deaktiviert) fügt den Build-Flags Dummy-Canary-Optionen hinzu
dass die Build-Protokolle überprüft werden können, um festzustellen, wie sich die Build-Flags verbreiten und zulassen
Es wurde festgestellt, dass die normalen Build-Flag-Einstellungen fehlen. Der einzige derzeit unterstützte
Flaggen sind CPPFLAGS, CFLAGS, OBJCFLAGS, CXXFLAGS und OBJCXXFLAGS mit Flags auf gesetzt
-D__DEB_CANARY_Flagge_Zufalls-ID__ und LDFLAGS einstellen -Wl,-z,deb-canary-Zufalls-ID.

reinigen
Mehrere Optionen zur Kompilierungszeit (siehe unten) können verwendet werden, um das Ergebnis zu bereinigen
binär gegen Speicherbeschädigungen, Speicherlecks, Verwendung nach dem Freigeben, Threading-Datenrennen und
undefinierte Verhaltensfehler.

Adresse
Diese Einstellung (standardmäßig deaktiviert) fügt hinzu -fsanitize=Adresse zu LDFLAGS und
-fsanitize=Adresse -fno-Rahmenzeiger auslassen zu CFLAGS und CXXFLAGS.

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

Leck Diese Einstellung (standardmäßig deaktiviert) fügt hinzu -fsanitize=leck zu LDFLAGS. Es wird
automatisch deaktiviert, wenn entweder die Adresse oder im Faden Funktionen sind aktiviert, wie z
sie implizieren es.

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

Härten
Mehrere Optionen zur Kompilierungszeit (siehe unten) können verwendet werden, um das Ergebnis zu härten
Binär gegen Speicherbeschädigungsangriffe schützen oder währenddessen zusätzliche Warnmeldungen bereitstellen
Zusammenstellung. Sofern unten nicht anders angegeben, sind diese standardmäßig für Architekturen aktiviert, die
unterstütze sie.

Format Diese Einstellung (standardmäßig aktiviert) fügt hinzu -Wformat -Werror=Formatsicherheit zu CFLAGS,
CXXFLAGS, OBJCFLAGS und OBJCXXFLAGS. Dadurch wird vor einer falschen Formatzeichenfolge gewarnt
verwendet, und schlägt fehl, wenn Formatfunktionen auf eine Art und Weise verwendet werden, die möglich ist
Sicherheitsprobleme. Derzeit wird vor Anrufen gewarnt printf und scanf Funktionen
wobei die Formatzeichenfolge kein Zeichenfolgenliteral ist und keine Formatargumente vorhanden sind,
wie in printf(foo); statt printf("%s", foo); Dies kann eine Sicherheitslücke sein, wenn die
Die Formatzeichenfolge stammt von einer nicht vertrauenswürdigen Eingabe und enthält „%n“.

stärken
Diese Einstellung (standardmäßig aktiviert) fügt hinzu -D_FORTIFY_SOURCE=2 zu CPPFLAGS. Während des Codes
Generation kennt der Compiler viele Informationen über Puffergrößen (wo
möglich) und versucht, unsichere Pufferfunktionsaufrufe mit unbegrenzter Länge zu ersetzen
mit längenbegrenzten. Dies ist besonders nützlich für alten, mürrischen Code.
Darüber hinaus werden Formatzeichenfolgen im beschreibbaren Speicher, die „%n“ enthalten, blockiert. Wenn
Wenn eine Anwendung auf eine solche Formatzeichenfolge angewiesen ist, muss sie umgangen werden.

Beachten Sie, dass die Quelle auch kompiliert werden muss, damit diese Option wirksam ist
-O1 oder höher. Wenn die Umgebungsvariable DEB_BUILD_OPTIONS enthält neinopt und dann
stärken Die Unterstützung wird deaktiviert, da von Glibc 2.16 neue Warnungen ausgegeben werden
und später.

Stapelschutz
Diese Einstellung (standardmäßig aktiviert, wenn Stackprotectorstrong nicht verwendet wird) fügt hinzu
-stapelschutz --param=ssp-buffer-size=4 zu CFLAGS, CXXFLAGS, OBJCFLAGS,
OBJCXXFLAGS, GCJFLAGS, FLAGGEN und FCFLAGS. Dies fügt Sicherheitsüberprüfungen gegenüber dem Stapel hinzu
überschreibt. Dies führt dazu, dass viele potenzielle Code-Injection-Angriffe abgebrochen werden
Situationen. Im besten Fall verwandelt dies Code-Injection-Schwachstellen in Denial
Service- oder Non-Issues-Anforderungen (abhängig von der Anwendung).

Für diese Funktion ist eine Verknüpfung mit glibc (oder einem anderen Anbieter von) erforderlich
__stack_chk_fail), muss daher beim Erstellen mit deaktiviert werden -nostdlib or
-freistehend o.ä.

Stapelschutzstark
Diese Einstellung (standardmäßig aktiviert) fügt hinzu -fstack-protector-stark zu CFLAGS,
CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FLAGGEN und FCFLAGS. Das ist stärker
Variante von Stapelschutz, jedoch ohne nennenswerte Leistungseinbußen.

Deaktivieren Stapelschutz deaktiviert auch diese Einstellung.

Für diese Funktion gelten die gleichen Anforderungen wie Stapelschutz, und darüber hinaus auch
erfordert gcc 4.9 und höher.

relro Diese Einstellung (standardmäßig aktiviert) fügt hinzu -Wl,-z,relro zu LDFLAGS. Während des Programms
Beim Laden müssen mehrere ELF-Speicherabschnitte vom Linker beschrieben werden. Dies zeigt an
Der Lader muss diese Abschnitte schreibgeschützt machen, bevor er die Kontrolle an den übergibt
Programm. Dies verhindert vor allem GOT-Überschreibangriffe. Wenn diese Option ist
behindert, bindnow wird ebenfalls deaktiviert.

bindnow
Diese Einstellung (standardmäßig deaktiviert) fügt hinzu -Wl,-z,jetzt zu LDFLAGS. Während des Programmladens
Alle dynamischen Symbole werden aufgelöst, sodass das gesamte PLT als gelesen markiert werden kann.
nur (wegen relro über). Die Option kann nicht aktiviert werden, wenn relro ist nicht
aktiviert.

Kuchen Diese Einstellung (standardmäßig deaktiviert) fügt hinzu -fpie zu CFLAGS, CXXFLAGS, OBJCFLAGS,
OBJCXXFLAGS, GCJFLAGS, FLAGGEN und FCFLAGS und -fpie -Kuchen zu LDFLAGS. Position
Um das Adressraumlayout nutzen zu können, sind unabhängige ausführbare Dateien erforderlich
Randomisierung, unterstützt von einigen Kernel-Versionen. Während ASLR bereits sein kann
Für Datenbereiche im Stapel und Heap (brk und mmap) wird erzwungen, die Codebereiche müssen
ortsunabhängig zusammengestellt werden. Gemeinsam genutzte Bibliotheken tun dies bereits (-fPIC).
Sie gewinnen automatisch ASLR, aber binäre .text-Regionen müssen PIE erstellen, um zu gewinnen
ASLR. In diesem Fall sind ROP-Angriffe (Return Oriented Programming) viel schwieriger
da es bei einer Speicherbeschädigung keine statischen Orte gibt, von denen man abprallen könnte
Attacke.

Dies ist nicht kompatibel mit -fPIC Daher ist beim gemeinsamen Bauen Vorsicht geboten
Objekte.

Da PIE außerdem über ein allgemeines Register implementiert wird, gibt es einige Architekturen
(vor allem i386) können in sehr textsegmentigen Umgebungen Leistungseinbußen von bis zu 15 % verzeichnen.
hohe Anwendungsauslastung; Die meisten Workloads sehen weniger als 1 %. Architekturen mit
Allgemeinere Register (z. B. amd64) sehen keine so hohe Strafe im schlimmsten Fall.

reproduzierbar
Die unten aufgeführten Optionen zur Kompilierungszeit können verwendet werden, um die Reproduzierbarkeit des Builds zu verbessern
oder zusätzliche Warnmeldungen während der Kompilierung bereitstellen. Sofern unten nicht anders angegeben, gelten diese
sind standardmäßig für Architekturen aktiviert, die sie unterstützen.

zeitlos
Diese Einstellung (standardmäßig aktiviert) fügt hinzu -Wdate-Uhrzeit zu CPPFLAGS. Dies wird verursachen
Warnungen, wenn die __ZEIT__, __DATUM__ und __TIMESTAMP__ Es werden Makros verwendet.


Es gibt zwei Sätze von Umgebungsvariablen, die dieselben Vorgänge ausführen, den ersten
(DEB_Flagge_op) sollte niemals innerhalb verwendet werden debian/regeln. Es ist für jeden Benutzer gedacht, der möchte
um das Quellpaket mit anderen Build-Flags neu zu erstellen. Der zweite Satz
(DEB_Flagge_MAINT_op) sollte nur in verwendet werden debian/regeln von Paketbetreuern geändert werden
die resultierenden Build-Flags.

DEB_Flagge_SATZ
DEB_Flagge_MAINT_SET
Diese Variable kann verwendet werden, um den zurückgegebenen Wert für den gegebenen Wert zu erzwingen Flagge.

DEB_Flagge_STREIFEN
DEB_Flagge_MAINT_STRIP
Diese Variable kann verwendet werden, um eine durch Leerzeichen getrennte Liste der verfügbaren Optionen bereitzustellen
aus dem Satz von Flags entfernt, die für das gegebene zurückgegeben wurden Flagge.

DEB_Flagge_ANHÄNGEN
DEB_Flagge_MAINT_APPEND
Diese Variable kann verwendet werden, um zusätzliche Optionen an den zurückgegebenen Wert anzuhängen
das Gegebene Flagge.

DEB_Flagge_PREPEND
DEB_Flagge_MAINT_PREPEND
Diese Variable kann verwendet werden, um dem zurückgegebenen Wert zusätzliche Optionen voranzustellen
für das gegebene Flagge.

DEB_BUILD_OPTIONS
DEB_BUILD_MAINT_OPTIONS
Diese Variablen können von einem Benutzer oder Betreuer verwendet werden, um verschiedene Bereiche zu deaktivieren/aktivieren
Funktionen, die sich auf Build-Flags auswirken. Der DEB_BUILD_MAINT_OPTIONS Variablenüberschreibungen
jede Einstellung in der DEB_BUILD_OPTIONS Funktionsbereiche. Siehe die FEATURE BEREICHE Abschnitt
für weitere Einzelheiten.

Verwenden Sie dpkg-buildflags online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad