summaryrefslogtreecommitdiffstats
path: root/man/nl/dpkg-buildflags.pod
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--man/nl/dpkg-buildflags.pod798
1 files changed, 798 insertions, 0 deletions
diff --git a/man/nl/dpkg-buildflags.pod b/man/nl/dpkg-buildflags.pod
new file mode 100644
index 0000000..4d1e1ed
--- /dev/null
+++ b/man/nl/dpkg-buildflags.pod
@@ -0,0 +1,798 @@
+
+ *****************************************************
+ * 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 NAAM
+
+dpkg-buildflags - geeft de bij pakketbouw te gebruiken bouwvlaggen terug
+
+=head1 OVERZICHT
+
+B<dpkg-buildflags> [I<optie>...] [I<commando>]
+
+=head1 BESCHRIJVING
+
+B<dpkg-buildflags> is gereedschap om de compilatievlaggen op te halen die
+tijdens het bouwen van Debian pakketten gebruikt moeten worden.
+
+De standaardvlaggen worden gedefinieerd door de leverancier, maar ze kunnen
+op verschillende manieren uitgebreid/vervangen worden:
+
+=over
+
+=item 1.
+
+voor het hele systeem met B<%PKGCONFDIR%/buildflags.conf>;
+
+=item 2.
+
+voor de huidige gebruiker met B<$XDG_CONFIG_HOME/dpkg/buildflags.conf>,
+waarbij B<$XDG_CONFIG_HOME> als standaardwaarde B<$HOME/.config> heeft;
+
+=item 3.
+
+tijdelijk door de gebruiker met omgevingsvariabelen (zie het onderdeel
+B<OMGEVING>);
+
+=item 4.
+
+dynamisch door de pakketonderhouder met omgevingsvariabelen die ingesteld
+worden via B<debian/rules> (zie het onderdeel B<OMGEVING>).
+
+=back
+
+De configuratiebestanden kunnen vier types opdrachten bevatten:
+
+=over
+
+=item B<SET> I<vlag waarde>
+
+De vlag met I<vlag> als naam overschrijven om ze de waarde I<waarde> te
+geven.
+
+=item B<STRIP> I<vlag waarde>
+
+Van de vlag met I<vlag> als naam alle bouwvlaggen verwijderen die in
+I<waarde> opgesomd worden.
+
+=item B<APPEND> I<vlag waarde>
+
+De vlag met I<vlag> als naam uitbreiden door er de opties aan toe te voegen
+die in I<waarde> opgegeven worden. Er wordt een spatie geplaatst voor de
+waarde die toegevoegd wordt, indien de huidige waarde van de vlag niet leeg
+is.
+
+=item B<PREPEND> I<vlag waarde>
+
+De vlag met I<vlag> als naam uitbreiden door er vooraan de opties aan toe te
+voegen die in I<waarde> opgegeven worden. Er wordt een spatie geplaatst
+achter de waarde die toegevoegd wordt, indien de huidige waarde van de vlag
+niet leeg is.
+
+=back
+
+De configuratiebestanden kunnen commentaar bevatten op regels die beginnen
+met een hekje (#). Ook lege regels worden genegeerd.
+
+=head1 COMMANDO'S
+
+=over
+
+=item B<--dump>
+
+Op standaarduitvoer alle compilatievlaggen en hun waarden tonen. Dit geeft
+per regel één vlag en de waarde ervan weer met daartussenin een
+gelijkheidsteken (“I<vlag>=I<waarde>”). Dit is de standaardactie.
+
+=item B<--list>
+
+Een lijst weergeven van vlaggen die door de huidige leverancier ondersteund
+worden (één per regel). Zie het onderdeel B<SUPPORTED FLAGS> (ondersteunde
+vlaggen) voor meer informatie daarover.
+
+=item B<--status>
+
+Eventuele informatie laten zien welke nuttig kan zijn om het gedrag te
+verklaren van B<dpkg-buildflags> (sinds dpkg 1.16.5): relevante
+omgevingsvariabelen, huidige leverancier, toestand van alle
+functievlaggen. Ook de resulterende compileervlaggen met hun oorsprong
+weergeven.
+
+Het is de bedoeling dat dit uitgevoerd wordt vanuit B<debian/rules>, zodat
+de bouwlog een duidelijk spoor van de gebruikte vlaggen kan bijhouden. Dit
+kan nuttig zijn om ermee verband houdende problemen te diagnosticeren.
+
+=item B<--export=>I<indeling>
+
+Op standaarduitvoer commando's weergeven die gebruikt kunnen worden om alle
+compilatievlaggen te exporteren ten behoeve van een specifiek
+gereedschap. Indien de waarde I<indeling> niet opgegeven werd, wordt B<sh>
+verondersteld. Enkel compilatievlaggen die met een hoofdletter beginnen
+worden opgenomen. Van de andere wordt aangenomen dat ze niet bruikbaar zijn
+voor de omgeving. Ondersteunde indelingen:
+
+=over
+
+=item B<sh>
+
+Shell-opdrachten om alle compilatievlaggen in de omgeving in te stellen en
+te exporteren. Er worden aanhalingstekens geplaatst rond de vlagwaarden
+waardoor de uitvoer gereed is om door een shell geëvalueerd te worden.
+
+=item B<cmdline>
+
+Argumenten om door te geven aan de commandoregel van een bouwprogramma om al
+de compilatievlaggen te gebruiken (sinds dpkg 1.17.0). De vlagwaarden worden
+volgens de shell-syntaxis tussen haakjes geplaatst.
+
+=item B<configure>
+
+Dit is een verouderde alias voor B<cmdline>.
+
+=item B<make>
+
+Make-opdrachten om alle compilatievlaggen in de omgeving in te stellen en te
+exporteren. De uitvoer kan naar een Makefile-fragment geschreven worden en
+geëvalueerd met behulp van een B<include>-opdracht.
+
+=back
+
+=item B<--get> I<vlag>
+
+De waarde van de vlag op de standaarduitvoer weergeven. Sluit af met 0 bij
+een gekende vlag en sluit anders af met 1.
+
+=item B<--origin> I<vlag>
+
+De origine weergeven van de waarde die teruggegeven wordt door
+B<--get>. Sluit af met 0 bij een gekende vlag en sluit anders af met 1. De
+origine kan één van de volgende waarden hebben:
+
+=over
+
+=item B<vendor>
+
+de originele vlag die door de leverancier ingesteld werd, wordt
+teruggegeven;
+
+=item B<system>
+
+de vlag werd ingesteld/gewijzigd door een systeemconfiguratie;
+
+=item B<user>
+
+de vlag werd ingesteld/gewijzigd door een gebruikersspecifieke configuratie;
+
+=item B<env>
+
+de vlag werd ingesteld/gewijzigd door een omgevingsspecifieke configuratie.
+
+=back
+
+=item B<--query>
+
+Alle informatie tonen welke nuttig kan zijn om het gedrag van het programma
+te verklaren: huidige leverancier, relevante omgevingsvariabelen,
+functiegebieden, toestand van alle functievlaggen en de compileervlaggen met
+hun oorsprong (sinds dpkg 1.19.0).
+
+Bijvoorbeeld:
+
+ 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<gebied>
+
+De functies weergeven die voor een opgegeven gebied geactiveerd zijn (sinds
+dpkg 1.16.2). Momenteel worden door Debian en zijn derivaten enkel de
+gebieden B<future>, B<qa>, B<reproducible>, B<sanitize> en B<hardening>
+herkend. Zie het onderdeel B<FUNCTIEGEBIEDEN> voor meer details. Sluit af
+met 0 als het gebied gekend is, anders met 1.
+
+De uitvoer is in RFC822-indeling met één sectie per functie. Bijvoorbeeld:
+
+ Feature: pie
+ Enabled: yes
+
+ Feature: stackprotector
+ Enabled: yes
+
+=item B<--help>
+
+Info tonen over het gebruik en afsluiten.
+
+=item B<--version>
+
+De versie tonen en afsluiten.
+
+=back
+
+=head1 ONDERSTEUNDE VLAGGEN
+
+=over
+
+=item B<CFLAGS>
+
+Opties voor de C-compiler. De door de leverancier ingestelde standaardwaarde
+bestaat uit B<-g> en het standaardniveau van optimalisatie (gewoonlijk
+B<-O2>, of B<-O0> indien de omgevingsvariabele B<DEB_BUILD_OPTIONS> I<noopt>
+aangeeft).
+
+=item B<CPPFLAGS>
+
+Opties voor de C-preprocessor. Standaardwaarde: leeg.
+
+=item B<CXXFLAGS>
+
+Opties voor de C++ compiler. Hetzelfde als B<CFLAGS>.
+
+=item B<OBJCFLAGS>
+
+Opties voor de Objective C compiler. Hetzelfde als B<CFLAGS>.
+
+=item B<OBJCXXFLAGS>
+
+Opties voor de Objective C++ compiler. Hetzelfde als B<CXXFLAGS>.
+
+=item B<GCJFLAGS>
+
+Opties voor de GNU Java compiler (gcj). Een subset van B<CFLAGS>.
+
+=item B<DFLAGS>
+
+Opties voor de D-compiler (ldc of gdc). Sinds dpkg 1.20.6.
+
+=item B<FFLAGS>
+
+Opties voor de Fortran 77 compiler. Een subset van B<CFLAGS>.
+
+=item B<FCFLAGS>
+
+Opties voor de Fortran 9x compiler. Hetzelfde als B<FFLAGS>.
+
+=item B<LDFLAGS>
+
+Opties die aan de compiler doorgegeven worden bij het linken van uitvoerbare
+programma's en gedeelde objecten (indien de linker rechtstreeks aangeroepen
+wordt, dan moeten B<-Wl> en B<,> van die opties verwijderd
+worden). Standaardwaarde: leeg.
+
+=back
+
+In de toekomst kunnen nog andere vlaggen toegevoegd worden als daar behoefte
+aan ontstaat (bijvoorbeeld om andere talen te ondersteunen).
+
+=head1 FUNCTIEGEBIEDEN
+
+Elke gebiedsfunctie kan in de gebiedswaarde van de omgevingsvariabelen
+B<DEB_BUILD_OPTIONS> en B<DEB_BUILD_MAINT_OPTIONS> ingeschakeld en
+uitgeschakeld worden met de schakelaars ‘B<+>’ en ‘B<->’. Om bijvoorbeeld de
+B<hardening>-functionaliteit “pie” te activeren en de functionaliteit
+“fortify” uit te schakelen, kunt u in B<debian/rules> het volgende doen:
+
+ export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify
+
+De bijzondere functie B<all> (geldig in elk gebied) kan gebruikt worden om
+gelijktijdig alle gebiedsfunctionaliteit te activeren of uit te
+schakelen. Alles uitschakelen in het gebied B<hardening> en enkel “format”
+en “fortify” activeren kunt u dus doen met:
+
+ export DEB_BUILD_MAINT_OPTIONS=hardening=-all,+format,+fortify
+
+=head2 future
+
+Er kunnen verschillende compilatieopties (die hierna beschreven worden)
+gebruikt worden om functies te activeren die standaard geactiveerd zouden
+moeten zijn, maar dat niet zijn om redenen van terugwaartse compatibiliteit.
+
+=over
+
+=item B<lfs>
+
+Deze instelling (standaard uitgezet) activeert ondersteuning voor grote
+bestanden (Large File Support) op 32-bits architecturen waarvan de ABI
+standaard geen LFS-ondersteuning biedt, door B<-D_LARGEFILE_SOURCE
+-D_FILE_OFFSET_BITS=64> toe te voegen aan B<CPPFLAGS>.
+
+=back
+
+=head2 qa (kwaliteitsbevordering)
+
+Er kunnen verschillende compilatieopties (die hierna beschreven worden)
+gebruikt worden om problemen in de broncode of het bouwsysteem te helpen
+detecteren.
+
+=over
+
+=item B<bug>
+
+Deze instelling (die standaard uitgeschakeld is) voegt alle
+waarschuwingsopties toe die op een betrouwbare wijze problematische broncode
+opsporen. De waarschuwingen zijn fataal. De enige vlaggen die momenteel
+ondersteund worden zijn B<CFLAGS> en B<CXXFLAGS> waarbij de vlaggen
+ingesteld staan op B<-Werror=array-bounds>, B<-Werror=clobbered>,
+B<-Werror=implicit-function-declaration> en
+B<-Werror=volatile-register-var>.
+
+=item B<canary>
+
+Deze instelling (die standaard uitgeschakeld is) voegt loze
+kanarievogelopties toe aan de bouwvlaggen, zodat in de bouwlogs nagekeken
+kan worden hoe de bouwvlaggen doorgegeven worden en zodat het eventueel
+ontbreken van normale bouwvlaginstellingen ontdekt kan worden. Momenteel
+zijn de enige ondersteunde vlaggen B<CPPFLAGS>, B<CFLAGS>, B<OBJCFLAGS>,
+B<CXXFLAGS> en B<OBJCXXFLAGS>, waarbij die vlaggen als
+B<-D__DEB_CANARY_>I<vlag>_I<willekeurige-id>B<__> ingesteld worden, en
+B<LDFLAGS> dat ingesteld wordt op B<-Wl,-z,deb-canary->I<willekeurige-id>.
+
+=back
+
+=head2 sanitize (saneren)
+
+Er kunnen verschillende compilatie-opties (die hierna beschreven worden)
+gebruikt worden om te helpen bij het gezond houden van een resulterend
+binair pakket op het vlak van geheugenvervuiling, geheugenlekkage,
+geheugengebruik na vrijgave, dataraces bij threads en bugs door
+ongedefinieerd gedrag. B<Noot>: deze opties zouden B<niet> gebruikt mogen
+worden voor een bouw voor productiedoeleinden, aangezien ze een verminderde
+betrouwbaarheid bieden inzake codeconformiteit en de beveiliging en zelfs de
+functionaliteit reduceren.
+
+=over
+
+=item B<address>
+
+Deze instelling (standaard uitgeschakeld) voegt B<-fsanitize=address> toe
+aan B<LDFLAGS> en B<-fsanitize=address -fno-omit-frame-pointer> aan
+B<CFLAGS> en aan B<CXXFLAGS>.
+
+=item B<thread>
+
+Deze instelling (standaard uitgeschakeld) voegt B<-fsanitize=thread> toe aan
+B<CFLAGS>, B<CXXFLAGS> en B<LDFLAGS>.
+
+=item B<leak>
+
+Deze instelling (standaard uitgeschakeld) voegt B<-fsanitize=leak> toe aan
+B<LDFLAGS>. Ze wordt automatisch uitgeschakeld als ofwel de
+B<address>-functionaliteit of de B<thread>-functionaliteit geactiveerd is,
+aangezien die dit impliceren.
+
+=item B<undefined>
+
+Deze instelling (standaard uitgeschakeld) voegt B<-fsanitize=undefined> toe
+aan B<CFLAGS>, B<CXXFLAGS> en B<LDFLAGS>.
+
+=back
+
+=head2 hardening (kwetsbaarheidsreductie)
+
+Er kunnen verschillende compilatie-opties (die hierna beschreven worden)
+gebruikt worden om te helpen bij het versterken van een resulterend binair
+pakket tegen geheugenvervuilingsaanvallen of om bijkomende
+waarschuwingsberichten te geven tijdens het compileren. Behalve wanneer
+hierna anders aangegeven is, worden deze opties standaard geactiveerd voor
+architecturen die ze ondersteunen.
+
+=over
+
+=item B<format>
+
+Deze instelling (standaard geactiveerd) voegt B<-Wformat
+-Werror=format-security> toe aan B<CFLAGS>, B<CXXFLAGS>, B<OBJCFLAGS> en
+B<OBJCXXFLAGS>. Dit zal waarschuwingen geven bij verkeerd gebruik van
+indelingstekenreeksen en zal mislukken als indelingsfuncties gebruikt worden
+op een manier die mogelijke veiligheidsproblemen tot gevolg kunnen
+hebben. Momenteel geeft dit een waarschuwing als een B<printf>-functie of
+een B<scanf>-functie aangeroepen wordt met een indelingstekenreeks die geen
+letterlijke tekenreeks is en er ook geen indelingsargumenten opgegeven
+werden, zoals bij B<printf(foo);> in plaats van B<printf("%s", foo);>. Dit
+kan een veiligheidslek zijn als de indelingstekenreeks afkomstig was van
+onbetrouwbare invoer en ‘%n’ bevat.
+
+=item B<fortify>
+
+Deze instelling (standaard geactiveerd) voegt B<-D_FORTIFY_SOURCE=2> toe aan
+B<CPPFLAGS>. Tijdens het produceren van de code heeft de compiler een
+heleboel informatie over buffergroottes (waar mogelijk), en tracht een
+functieaanroep met een onveilige ongelimiteerde buffergrootte te vervangen
+door een functieaanroep met een gelimiteerde buffergrootte. Dit is in het
+bijzonder nuttig bij oude en slecht geschreven code. Daarnaast wordt het
+gebruik in het voor schrijven toegankelijk geheugen van
+indelingstekenreeksen die ‘%n’ bevatten, geblokkeerd. Indien een toepassing
+op een dergelijke indelingstekenreeks steunt, zal het er een alternatief
+voor moeten gebruiken.
+
+Merk op dat de code ook met B<-O1> of hoger gecompileerd moet worden opdat
+deze optie effect zou hebben. Indien de omgevingsvariabele
+B<DEB_BUILD_OPTIONS> I<noopt> bevat, dan wordt ondersteuning voor B<fortify>
+uitgeschakeld. Dit is te wijten aan nieuwe waarschuwingen die gegeven worden
+door glibc 2.16 en hoger.
+
+=item B<stackprotector>
+
+Deze instelling (standaard geactiveerd als stackprotectorstrong niet
+gebruikt wordt) voegt B<-fstack-protector --param=ssp-buffer-size=4> toe aan
+B<CFLAGS>, B<CXXFLAGS>, B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS>
+en B<FCFLAGS>. Dit voegt beveiligingscontroles tegen het overschrijven van
+de stack toe. Dit maakt dat bij veel mogelijke code-injectieaanvallen
+afgebroken wordt. In het beste geval wordt op die manier een kwetsbaarheid
+voor code-injectie omgebogen tot een denial-of-service (dienst niet
+beschikbaar) of een fictief probleem (afhankelijk van de toepassing).
+
+Deze functionaliteit vereist het linken van de code met glibc (of een andere
+aanbieder van B<__stack_chk_fail>) en moet dus uitgeschakeld worden als er
+gebouwd wordt met B<-nostdlib> of B<-ffreestanding> of iets gelijkaardigs.
+
+=item B<stackprotectorstrong>
+
+Deze instelling (standaard geactiveerd) voegt B<-fstack-protector-strong>
+toe aan B<CFLAGS>, B<CXXFLAGS>, B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>,
+B<FFLAGS> en B<FCFLAGS>. Dit is een sterkere variant van B<stackprotector>,
+maar zonder noemenswaardig prestatieverlies.
+
+Het uitzetten van B<stackprotector> schakelt ook deze functionaliteit uit.
+
+Deze functionaliteit stelt dezelfde vereisten als B<stackprotector> en heeft
+daarenboven ook gcc 4.9 of een recentere versie nodig.
+
+=item B<relro>
+
+Deze instelling (standaard geactiveerd) voegt B<-Wl,-z,relro> toe aan
+B<LDFLAGS>. Tijdens het laden van het programma moet de linker in
+verschillende ELF-geheugensecties schrijven. Dit zet voor de programmalader
+een vlag zodat die deze secties alleen-lezen maakt alvorens de controle over
+te dragen aan het programma. Het meest noemenswaardige effect is dat dit
+aanvallen door het overschrijven van de Global Offset Table (GOT)
+voorkomt. Indien deze optie uitgeschakeld wordt, wordt ook B<bindnow>
+uitgezet.
+
+=item B<bindnow>
+
+Deze instelling (standaard uitgeschakeld) voegt B<-Wl,-z,now> toe aan
+B<LDFLAGS>. Tijdens het laden van het programma worden alle dynamische
+symbolen omgezet, waardoor de volledige PLT (Procedure Linkage Table) als
+alleen lezen gemarkeerd kan worden (ten gevolge van B<relro> hiervoor). Deze
+optie kan niet aangezet worden als B<relro> niet geactiveerd is.
+
+=item B<pie>
+
+Deze instelling (zonder standaardinstelling sinds dpkg 1.18.23, aangezien
+het nu standaard geactiveerd wordt door gcc op de Debian-architecturen
+amd64, arm64, armel, armhf, hurd-i386, i386, kfreebsd-amd64, kfreebsd-i386,
+mips, mipsel, mips64el, powerpc, ppc64, ppc64el, riscv64, s390x, sparc en
+sparc64) voegt zo nodig de vereiste opties toe om PIE te activeren of te
+deactiveren via gcc specs-bestanden, afhankelijk van het feit of gcc op die
+architectuur de vlaggen zelf injecteert of niet. Indien de instelling
+geactiveerd is en gcc de vlaggen injecteert, voegt ze niets toe. Indien de
+instelling geactiveerd is en gcc de vlaggen niet injecteert, voegt ze
+B<-fPIE> toe (via I<%PKGDATADIR%/pie-compiler.specs>) aan B<CFLAGS>,
+B<CXXFLAGS>, B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS> en
+B<FCFLAGS>, en B<-fPIE -pie> (via I<%PKGDATADIR%/pie-link.specs>) aan
+B<LDFLAGS>. Indien de instelling gedeactiveerd is en gcc de vlaggen
+injecteert, voegt ze B<-fno-PIE> toe (via
+I<%PKGDATADIR%/no-pie-compile.specs>) aan B<CFLAGS>, B<CXXFLAGS>,
+B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS> en B<FCFLAGS>, en
+B<-fno-PIE -no-pie> (via I<%PKGDATADIR%/no-pie-link.specs>) aan B<LDFLAGS>.
+
+Position Independent Executable (PIE - positie-onafhankelijke programma's)
+zijn nodig om voordeel te halen uit Address Space Layout Randomization (ASLR
+- de adresruimte rangschikken in toevallige volgorde), hetgeen door sommige
+kernelversies ondersteund wordt. Hoewel ASLR reeds voor datagebieden in de
+stack en de heap opgelegd kan worden (brk and mmap), moeten de codegebieden
+als positieonafhankelijk gecompileerd worden. Gedeelde bibliotheken doen dit
+reeds (B<-fPIC>), waardoor zij automatisch ASLR krijgen, maar binaire
+.text-gebieden moeten als PIE gebouwd worden om ASLR te krijgen. Als dit
+gebeurt, worden aanvallen van het type ROP (Return Oriented Programming - op
+terugkeerwaarde georiënteerd programmeren) veel moeilijker aangezien er geen
+statische locaties meer zijn die bij een aanval van geheugenvervuiling als
+springplank gebruikt kunnen worden.
+
+PIE is niet compatibel met B<-fPIC>, dus over het algemeen moet men
+voorzichtig zijn bij het bouwen van gedeelde objecten. Maar aangezien de
+PIE-vlaggen die meegegeven worden geïnjecteerd worden via specs-bestanden
+van gcc, zou het altijd veilig moeten zijn om ze onvoorwaardelijk in te
+stellen ongeacht het objecttype dat gecompileerd of gelinkt wordt.
+
+Statische bibliotheken kunnen door programma's of door andere gedeelde
+bibliotheken gebruikt worden. Afhankelijk van de gebruikte vlaggen bij het
+compileren van alle objecten in een statische bibliotheek, zullen deze
+bibliotheken door verschillende reeksen objecten gebruikt kunnen worden:
+
+=over
+
+=item geen
+
+Kan niet gelinkt worden aan een PIE-programma, noch aan een gedeelde
+bibliotheek.
+
+=item B<-fPIE>
+
+Kan gelinkt worden aan elk programma, maar niet aan een gedeelde bibliotheek
+(aanbevolen).
+
+=item B<-fPIC>
+
+Kan gelinkt worden aan elk programma en elke gedeelde bibliotheek.
+
+=back
+
+Indien er een behoefte bestaat om deze vlaggen manueel in te stellen en de
+gcc specs-injectie te overbruggen, moet u rekening houden met verschillende
+zaken. Het onvoorwaardelijk en expliciet doorgeven van B<-fPIE>, B<-fpie> of
+B<-pie> aan een bouwsysteem dat libtool gebruikt, is veilig aangezien deze
+vlaggen weggelaten worden bij het bouwen van gedeelde bibliotheken. Bij
+projecten waarin daarentegen zowel programma's als gedeelde bibliotheken
+gebouwd worden, moet u ervoor zorgen dat bij het bouwen van de gedeelde
+bibliotheken B<-fPIC> steeds als laatste doorgegeven wordt (waardoor het een
+eventuele voorafgaande B<-PIE> opheft) aan compilatievlaggen zoals B<CFLAGS>
+en dat B<-shared> als laatste doorgegeven wordt (waardoor het een eventuele
+voorafgaande B<-pie> opheft) aan linkvlaggen zoals B<LDFLAGS>. B<Opmerking:>
+dit is niet nodig met het standaard specs-mechanisme van gcc.
+
+Aangezien PIE via een algemeen register geïmplementeerd wordt, kunnen
+bovendien bij sommige architecturen (maar niet meer bij i386 sinds de
+optimalisaties die in gcc E<gt>= 5 toegepast zijn) prestatieverminderingen
+tot 15% optreden bij zeer zware belasting met tekstsegmenten van
+toepassingen. De meeste belastingen hebben minder dan 1%
+prestatievermindering tot gevolg. Architecturen met meer algemene registers
+(bijv. amd64) vertonen niet zo een hoge terugval in de ergste gevallen.
+
+=back
+
+=head2 reproducible (reproduceerbaar)
+
+De hierna behandelde compilatieopties kunnen gebruikt worden om de
+bouwreproduceerbaarheid te helpen verbeteren of om bijkomende
+waarschuwingsberichten af te leveren tijdens het compileren. Behalve wanneer
+het hierna aangegeven wordt, worden deze opties standaard geactiveerd voor
+architecturen die ze ondersteunen.
+
+=over
+
+=item B<timeless>
+
+Deze instelling (standaard geactiveerd) voegt B<-Wdate-time> toe bij
+B<CPPFLAGS>. Dit leidt tot waarschuwingen als de macros B<__TIME__>,
+B<__DATE__> en B<__TIMESTAMP__> gebruikt worden.
+
+=item B<fixfilepath>
+
+Deze instelling (standaard geactiveerd) voegt
+B<-ffile-prefix-map=>I<BUILDPATH>B<=.> toe aan B<CFLAGS>, B<CXXFLAGS>,
+B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS> en B<FCFLAGS>, waarbij
+B<BUILDPATH> ingesteld wordt op de basismap van het pakket dat gebouwd
+wordt. Dit heeft als effect dat het bouwpad verwijderd wordt van elk
+gegenereerd bestand.
+
+Indien zowel B<fixdebugpath> als B<fixfilepath> ingesteld zijn, heeft deze
+laatste optie voorrang, omdat het een superset is van de eerste.
+
+=item B<fixdebugpath>
+
+Deze instelling (standaard geactiveerd) voegt
+B<-fdebug-prefix-map=>I<BUILDPATH>B<=.> toe aan B<CFLAGS>, B<CXXFLAGS>,
+B<OBJCFLAGS>, B<OBJCXXFLAGS>, B<GCJFLAGS>, B<FFLAGS> en B<FCFLAGS>, waarbij
+B<BUILDPATH> ingesteld wordt op de basismap van het pakket dat gebouwd
+wordt. Dit heeft als effect dat het bouwpad verwijderd wordt van eventueel
+gegenereerde debug-symbolen.
+
+=back
+
+=head1 OMGEVING
+
+Er zijn twee sets omgevingsvariabelen die dezelfde operaties uitvoeren. De
+eerste (DEB_I<vlag>_I<operatie>) zou nooit gebruikt mogen worden binnen
+B<debian/rules>. Die is bedoeld voor eventuele gebruikers die het bronpakket
+opnieuw willen bouwen met andere bouwvlaggen. De tweede set
+(DEB_I<vlag>_MAINT_I<operatie>) zou door pakketonderhouders enkel in
+B<debian/rules> gebruikt moeten worden om de resulterende bouwvlaggen aan te
+passen.
+
+=over
+
+=item B<DEB_>I<vlag>B<_SET>
+
+=item B<DEB_>I<vlag>B<_MAINT_SET>
+
+Deze variabele kan gebruikt worden om de teruggegeven waarde voor de
+opgegeven vlag I<vlag> af te dwingen.
+
+=item B<DEB_>I<vlag>B<_STRIP>
+
+=item B<DEB_>I<vlag>B<_MAINT_STRIP>
+
+Deze variabele kan gebruikt worden om in een lijst met witruimte als
+scheidingsteken opties op te geven die weggehaald zullen worden uit de set
+vlaggen die teruggegeven wordt voor de opgegeven I<vlag>.
+
+=item B<DEB_>I<vlag>B<_APPEND>
+
+=item B<DEB_>I<vlag>B<_MAINT_APPEND>
+
+Deze variabele kan gebruikt worden om bijkomende opties toe te voegen aan de
+waarde die teruggegeven wordt voor de opgegeven I<vlag>.
+
+=item B<DEB_>I<vlag>B<_PREPEND>
+
+=item B<DEB_>I<vlag>B<_MAINT_PREPEND>
+
+Deze variabele kan gebruikt worden om vooraan bijkomende opties toe te
+voegen aan de waarde die teruggegeven wordt voor de opgegeven I<vlag>.
+
+=item B<DEB_BUILD_OPTIONS>
+
+=item B<DEB_BUILD_MAINT_OPTIONS>
+
+Deze variabelen kunnen door een gebruiker of een onderhouder gebruikt worden
+om diverse gebiedsfuncties die bouwvlaggen beïnvloeden, te activeren of uit
+te zetten. De variabele B<DEB_BUILD_MAINT_OPTIONS> vervangt eventuele
+instellingen in de functionaliteitsgebieden B<DEB_BUILD_OPTIONS>. Zie het
+onderdeel B<FUNCTIONALITEITSGEBIEDEN> voor de details.
+
+=item B<DEB_VENDOR>
+
+Deze instelling definieert de huidige leverancier. Indien zij niet ingesteld
+is, zal gezocht worden naar de huidige leverancier door te gaan lezen in
+B<%PKGCONFDIR%/origins/default>.
+
+=item B<DEB_BUILD_PATH>
+
+Deze variabele stelt in welk bouwpad (sinds dpkg 1.18.8) gebruikt moet
+worden bij functionaliteit zoals B<fixdebugpath> waardoor die gesuperviseerd
+kan worden door het aanroepende programma. Momenteel is deze variabele
+Debian- en derivaat-specifiek.
+
+=item B<DPKG_COLORS>
+
+Stelt de kleurmodus in (sinds dpkg 1.18.5). Waarden die momenteel gebruikt
+mogen worden zijn: B<auto> (standaard), B<always> en B<never>.
+
+=item B<DPKG_NLS>
+
+Indien dit ingesteld is, zal het gebruikt worden om te beslissen over het
+activeren van moedertaalondersteuning, ook gekend als
+internationaliseringsondersteuning (of i18n) (sinds dpkg 1.19.0). Geldige
+waarden zijn: B<0> and B<1> (standaard).
+
+=back
+
+=head1 BESTANDEN
+
+=head2 Configuratiebestanden
+
+=over
+
+=item B<%PKGCONFDIR%/buildflags.conf>
+
+Configuratiebestand dat voor het hele systeem geldt.
+
+=item B<$XDG_CONFIG_HOME/dpkg/buildflags.conf> of
+
+=item B<$HOME/.config/dpkg/buildflags.conf>
+
+Configuratiebestand dat gebruikersafhankelijk is.
+
+=back
+
+=head2 Ondersteuning bij het maken van een pakket
+
+=over
+
+=item B<%PKGDATADIR%/buildflags.mk>
+
+Makefile-fragment dat alle vlaggen die door B<dpkg-buildflags> ondersteund
+worden, laadt in variabelen (en eventueel exporteert) (sinds dpkg 1.16.1).
+
+=back
+
+=head1 VOORBEELDEN
+
+Om in een Makefile bouwvlaggen door te geven aan een bouwcommando:
+
+=over
+
+ $(MAKE) $(shell dpkg-buildflags --export=cmdline)
+
+ ./configure $(shell dpkg-buildflags --export=cmdline)
+
+=back
+
+Om in een shell-script of shell-fragment bouwvlaggen in te stellen, kan
+B<eval> gebruikt worden om de uitvoer te interpreteren en de vlaggen in de
+omgeving te exporteren:
+
+=over
+
+ eval "$(dpkg-buildflags --export=sh)" && make
+
+=back
+
+of om de positieparameters in te stellen die aan een commando doorgegeven
+moeten worden:
+
+=over
+
+ eval "set -- $(dpkg-buildflags --export=cmdline)"
+ for dir in a b c; do (cd $dir && ./configure "$@" && make); done
+
+=back
+
+=head2 Het gebruik in debian/rules
+
+Om de benodigde bouwvlaggen te bekomen die aan het bouwsysteem doorgegeven
+moeten worden, moet u vanuit het bestand B<debian/rules> B<dpkg-buildflags>
+aanroepen of B<buildflags.mk> invoegen. Merk op dat oudere versies van
+B<dpkg-buildpackage> (voor dpkg 1.16.1) deze vlaggen automatisch
+exporteerden. U zou hierop echter niet mogen betrouwen, aangezien dit het
+handmatig aanroepen van B<debian/rules> defect maakt.
+
+Voor pakketten met een autoconf-achtig bouwsysteem, kunt u de relevante
+opties rechtstreeks doorgeven aan configure of B<make>(1), zoals hiervoor
+geïllustreerd werd.
+
+Voor andere bouwsystemen, of indien u een meer fijnmazige controle nodig
+heeft over welke vlaggen waar doorgegeven worden, kunt u B<--get>
+gebruiken. Of in de plaats daarvan kunt u B<buildflags.mk> invoegen, dat
+zorgt voor het aanroepen van B<dpkg-buildflags> en het opslaan van de
+bouwvlaggen in variabelen voor make.
+
+Indien u alle bouwvlaggen naar de omgeving wenst te exporteren (waar ze door
+uw bouwsysteem opgepikt kunnen worden):
+
+=over
+
+ DPKG_EXPORT_BUILDFLAGS = 1
+ include %PKGDATADIR%/buildflags.mk
+
+=back
+
+Als u bijkomende controle wenst over wat geëxporteerd wordt, kunt u de
+variabelen handmatig exporteren (aangezien er standaard geen enkele
+geëxporteerd wordt):
+
+=over
+
+ include %PKGDATADIR%/buildflags.mk
+ export CPPFLAGS CFLAGS LDFLAGS
+
+=back
+
+En u kunt de vlaggen natuurlijk ook handmatig doorgeven aan commando's:
+
+=over
+
+ include %PKGDATADIR%/buildflags.mk
+ build-arch:
+ $(CC) -o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
+
+=back
+