Provided by: dpkg-dev_1.16.1.2ubuntu7_all bug

NAMN

       dpkg-buildflags  -  returnerar  byggflaggor  att  använda för att bygga
       paket

SYNOPS

       dpkg-buildflags [flagga...] kommando

BESKRIVNING

       dpkg-buildflags är ett verktyg för att  hämta  kompileringsflaggor  att
       använda  för  att  bygga  Debianpaket.  De  förvalda flaggorna anges av
       leverantören, men de kan utökas/överstyras på flera sätt:

       1.     på hela systemet med /etc/dpkg/buildflags.conf;

       2.     för         den         nuvarande         användaren         med
              $XDG_CONFIG_HOME/dpkg/buildflags.conf  där  $XDG_CONFIG_HOME har
              standardvärdet $HOME/.config;

       3.     temporärt av användaren med miljövariabler (se stycket MILJÖ).

       4.     dynamiskt av paketansvariga med  miljövariabler  som  sätts  via
              debian/rules (se stycket MILJÖ).

       Konfigurationsfilerna kan innehålla två sorters direktiv:

       SET flagga vrde
              Överstyr flaggan flagga till att ha värdet vrde.

       STRIP flagga vrde
              Ta bort alla flaggor som listas i vrde från flaggan som anges i
              flagga.

       APPEND flagga vrde
              Utöka flaggan flagga genom att lägga till alternativen som anges
              i  vrde.  Ett  blanksteg  läggs  till  före  värdet om flaggans
              nuvarande värde inte är tomt.

       PREPEND flagga vrde
              Utöka flaggan flagga genom att lägga till alternativen som anges
              i vrde först. Ett blanksteg läggs till efter värdet om flaggans
              nuvarande värde inte är tomt.

       Konfigurationsfilerna kan innehålla kommentarer på rader som börjar med
       ett nummertecken (#). Även tomma rader ignoreras.

KOMMANDON

       --dump Skriv  alla  kompileringsflaggor och deras värde på standard ut.
              En flagga skrivs per rad,  avdelade  från  sitt  värde  med  ett
              likamedtecken ("flagga=vrde"). Detta är standardåtgärden.

       --list Skriv   ut  listan  över  flaggor  som  stöds  av  den  aktuella
              leverantören (en per rad). Se stycket FLAGGOR SOM STÖDS för  mer
              information om dem.

       --export=format
              Skriv skal- (om format är sh) eller make-kommandon (om format är
              make)   som   kan    användas    för    att    exportera    alla
              kompileringsflaggor  i  miljön  till  standard  ut. Om format är
              configure kan utdata användas på en ./configure-kommandorad.  Om
              format  inte  anges  antas  sh.  Endast  kompileringsflaggor som
              börjar med en stor bokstav tas med, andra antas  att  inte  vara
              lämpliga för miljön.

       --get flagga
              Skriv  ut  värdet  på  flaggan på standard ut. Avslutar med 0 om
              flaggan är känd, om inte avslutar den med 1.

       --origin flagga
              Anger ursprunget till flaggan som returneras av --get.  Avslutar
              med 0 om flaggan är känd, om inte avslutar med 1. Ursprunget kan
              vara ett av följande värden:

              vendor originalflagga satt av leverantören returneras;

              system flaggan är satt/modifierad av systemkonfigurationen;

              user   flaggan är satt/modifierad av användarkonfigurationen;

              env    flaggan   är   satt/modifierad   av   en    miljöspecifik
                     konfiguration.

       --help Visar hjälpskärm och avslutar.

       --version
              Visar version och avslutar.

FLAGGOR SOM STÖDS

       CFLAGS Flaggor   för   C-kompilatorn.   Standardvärdet   som  satts  av
              leverantören innehåller -g  och  den  förvalda  optimeringsnivån
              (vanligtvis  -O2,  eller -O0 om miljövariabeln DEB_BUILD_OPTIONS
              definierar noopt).

       CPPFLAGS
              Flaggor för C-förprocesseraren. Förvalt värde: tomt.

       CXXFLAGS
              Flaggor för C++-kompilatorn. Samma som CFLAGS.

       FFLAGS Flaggor för Fortrankompilatorn. Samma som CFLAGS.

       LDFLAGS
              Flaggor som sänds till kompilatorn vid länkning av binärer eller
              delade  objekt  (om  länkaren anropas direkt måste -Wl och , tas
              bort från dessa flaggor). Standardvärde: tomt.

FILER

       /etc/dpkg/buildflags.conf
              Konfigurationsfil för hela systemet.

       $XDG_CONFIG_HOME/dpkg/buildflags.conf                             eller
       $HOME/.config/dpkg/buildflags.conf
              Användarens konfigurationsfil.

MILJÖVARIABLER

       Det finns två uppsättningar miljövariabler som utför samma operationer,
       den första (DEB_flagga_op) bör aldrig användas inuti debian/rules). Den
       är  tänkt  för  användare  som  vill bygga om källkodspaketet med andra
       byggflaggor. Den andra uppsättningen (DEB_flagga_MAINT_op)  bör  endast
       användas  i debian/rules av paketansvariga för att ändra de slutgiltiga
       byggflaggorna.

       DEB_flagga_SET
       DEB_flagga_MAINT_SET
              Denna variabel kan användas  för  att  tvinga  fram  värdet  som
              returneras för given flagga.

       DEB_flagga_STRIP
       DEB_flagga_MAINT_STRIP
              Denna   variabel   kan   användas   för  att  tillhandahålla  en
              blankstegsavdelad lista med flaggor som kommer att tas bort från
              uppsättningen flaggor som ges för given flagga.

       DEB_flagga_APPEND
       DEB_flagga_MAINT_APPEND
              Denna  variabel  kan  användas  för  att  lägga till ytterligare
              flaggor till värdet som returneras för given flagga.

       DEB_flagga_PREPEND
       DEB_flagga_MAINT_PREPEND
              Denna variabel kan  användas  för  att  lägga  till  ytterligare
              flaggor först i värdet som returneras för given flagga.

       DEB_BUILD_MAINT_OPTIONS
              Den   här  variabeln  kan  användas  för  att  slå  av/på  olika
              härdningsbyggflaggor genom alternativet hardening. Se  avsnittet
              HÄRDNING för mer information.

HÄRDNING

       Du  kan  använda  flera kompileringsflaggor (se detaljer nedan) för att
       härda den färdiga binären mot minnesfördärvningsangrepp, eller för  att
       ge ytterligare varningsmeddelanden under kompileringen. Förutom det som
       anges nedan aktiveras dessa som standard för  arkitekturer  som  stöder
       dem.

       Varje  härdningsfunktion kan aktiveras och inaktiveras i miljövariabeln
       DEB_BUILD_MAINT_OPTIONS värde hardening med modifierarna "+"  och  "-".
       Du  kan  till  exempel  aktivera  och  funktionen  "pie" och inaktivera
       funktionen "fortify" genom att ange detta i debian/rules:

         export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify

       Den speciella funktionen  all  kan  användas  för  att  aktivera  eller
       inaktivera  alla  härdningsfunktioner  samtidigt.  Du  kan till exempel
       inaktivera allt och endast aktivera "format" och "fortify" med:

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

       format Inställningen (aktiverad  som  standard)  lägger  till  -Wformat
              -Wformat-security   -Werror=format-security   till   CFLAGS  och
              CXXFLAGS. Detta kommer  att  varna  om  olämplig  användning  av
              formatsträngar,   och   att  misslyckas  när  formatfunktionerna
              används på ett sätt som representerar möjliga  säkerhetsproblem.
              För  närvarande  varnar  detta om anrop till funktionerna printf
              och scanf där formatsträngen inte är en fast sträng och när  det
              inte finns några formatargument, som i printf(foo); istället för
              printf("%s",  foo);  Detta  kan   vara   ett   säkerhetshål   om
              formatsträngen  kommer  från  en  obetrodd  källa och innehåller
              "%n".

       fortify
              This setting (enabled by default)  adds  -D_FORTIFY_SOURCE=2  to
              CPPFLAGS. During code generation the compiler knows a great deal
              of information about buffer sizes (where possible), and attempts
              to  replace insecure unlimited length buffer function calls with
              length-limited ones. This is especially useful for  old,  crufty
              code.  Additionally,  format  strings  in  writable  memory that
              contain '%n' are blocked. If an application depends  on  such  a
              format string, it will need to be worked around.

              Observera  att,  för  att den här flaggan skall ha någon effekt,
              måste källkoden också kompileras med -O1 eller högre.

       stackprotector
              Inställningen   (aktiverad    som    standard)    lägger    till
              -fstack-protector   --param=ssp-buffer-size=4  till  CFLAGS  och
              CXXFLAGS.   Detta   lägger    till    säkerhetskontroller    mot
              stacköverskrivningar,    vilket    gör    att    många   möjliga
              kodinjiceringsangrepp istället avbryter programmet. I det  bästa
              fallet gör det kodinjiceringsangrepp till överbelastnignsangrepp
              eller icke-problem (beroende på programmet).

              Den här funktionen kräver länkning mot glibc  (eller  ett  annat
              bibliotek  som  tillhandahåller  __stack_chk_fail), så det måste
              inaktiveras när du bygger  med  -nostdlib  eller  -ffreestanding
              eller liknande.

       relro  Inställningen  (aktiverad som standard) lägger till -Wl,-z,relro
              till LDFLAGS. Vid inläsning av programmet måste länkaren  skriva
              till  flera  ELF-minnessektioner.  Den här inställningen flaggar
              till inläsaren att dessa  sektioner  skall  göras  skrivskyddade
              innan  programmet får kontroll. Detta skyddar huvudsaklingen mot
              GOT-överskrivningsangrepp.

       bindnow
              This setting (disabled by default) adds -Wl,-z,now  to  LDFLAGS.
              During  program load, all dynamic symbols are resolved, allowing
              for the entire PLT to be marked read-only (due to relro above).

       pie    Inställningen (inaktiverad som standard) lägger till -fPIE  till
              CFLAGS   och   CXXFLAGS,   samt   -fPIE   -pie   till   LDFLAGS.
              Positionsoberoende exekverbara program (PIE) behövs för att  dra
              fördel  av  slumpmässig adressrymd (ASLR), vilket stöds av vissa
              versioner  av  kärnan.  Medan  ASLR  redan  kan   användas   för
              datautrymmen  i  stacken  och  heap:en  (brk  och  mmap),  måste
              kodområden  först  kompileras  som  positionsoberoende.   Delade
              bibliotek  gör  redan  detta  (-fPI  C),  så de drar automatiskt
              fördel av ASLR medan binära .text-regioner måste byggas med  PIE
              för  att  uppnå  ASLR.  När  detta  sker  är ROP-angrepp (Return
              Oriented Programming) mycket svårare  eftersom  det  inte  finns
              några    statiska    platser    att    studsa    från    i   ett
              minnesfördärvningsangrepp.

              Detta är inte kompatibelt med -fPIC så man måste vara  försiktig
              när man bygger delade objekt.

              Eftersom  PIE i tillägg implementeras med ett generellt register
              kan    vissa    arkitekturer     (huvudsakligen     i386)     se
              prestandaförluster  upp  till  15%  i  väldigt textsegment-tunga
              programs  körning;  de  flesta  körningar  ser  mindre  än   1%.
              Arkitekturer  med många generella register (t.ex amd64) ser inte
              en lika stor värsta falls-förlust.

FÖRFATTARE

       Upphovsrättsskyddat © 2010-2011 Raphaël Hertzog

       Upphovsrättsskyddat © 2011 Kees Cook

       Detta är fri programvara; se GNU General Public License version 2 eller
       senare för kopieringsvillkor. Det finns INGEN GARANTI.

ÖVERSÄTTNING

       Peter Krefting och Daniel Nylander.