Provided by:
dpkg-dev_1.16.1.2ubuntu7_all 
NAMN
dpkg-buildflags - returnerar byggflaggor att anvanda for att bygga
paket
SYNOPS
dpkg-buildflags [flagga...] kommando
BESKRIVNING
dpkg-buildflags ar ett verktyg for att hamta kompileringsflaggor att
anvanda for att bygga Debianpaket. De forvalda flaggorna anges av
leverantoren, men de kan utokas/overstyras pa flera satt:
1. pa hela systemet med /etc/dpkg/buildflags.conf;
2. for den nuvarande anvandaren med
$XDG_CONFIG_HOME/dpkg/buildflags.conf dar $XDG_CONFIG_HOME har
standardvardet $HOME/.config;
3. temporart av anvandaren med miljovariabler (se stycket MILJ"O).
4. dynamiskt av paketansvariga med miljovariabler som satts via
debian/rules (se stycket MILJ"O).
Konfigurationsfilerna kan innehalla tva sorters direktiv:
SET flagga v"arde
Overstyr flaggan flagga till att ha vardet v"arde.
STRIP flagga v"arde
Ta bort alla flaggor som listas i v"arde fran flaggan som anges i
flagga.
APPEND flagga v"arde
Utoka flaggan flagga genom att lagga till alternativen som anges
i v"arde. Ett blanksteg laggs till fore vardet om flaggans
nuvarande varde inte ar tomt.
PREPEND flagga v"arde
Utoka flaggan flagga genom att lagga till alternativen som anges
i v"arde forst. Ett blanksteg laggs till efter vardet om flaggans
nuvarande varde inte ar tomt.
Konfigurationsfilerna kan innehalla kommentarer pa rader som borjar med
ett nummertecken (#). Aven tomma rader ignoreras.
KOMMANDON
--dump Skriv alla kompileringsflaggor och deras varde pa standard ut.
En flagga skrivs per rad, avdelade fran sitt varde med ett
likamedtecken ("flagga=v"arde"). Detta ar standardatgarden.
--list Skriv ut listan over flaggor som stods av den aktuella
leverantoren (en per rad). Se stycket FLAGGOR SOM ST"ODS for mer
information om dem.
--export=format
Skriv skal- (om format ar sh) eller make-kommandon (om format ar
make) som kan anvandas for att exportera alla
kompileringsflaggor i miljon till standard ut. Om format ar
configure kan utdata anvandas pa en ./configure-kommandorad. Om
format inte anges antas sh. Endast kompileringsflaggor som
borjar med en stor bokstav tas med, andra antas att inte vara
lampliga for miljon.
--get flagga
Skriv ut vardet pa flaggan pa standard ut. Avslutar med 0 om
flaggan ar kand, om inte avslutar den med 1.
--origin flagga
Anger ursprunget till flaggan som returneras av --get. Avslutar
med 0 om flaggan ar kand, om inte avslutar med 1. Ursprunget kan
vara ett av foljande varden:
vendor originalflagga satt av leverantoren returneras;
system flaggan ar satt/modifierad av systemkonfigurationen;
user flaggan ar satt/modifierad av anvandarkonfigurationen;
env flaggan ar satt/modifierad av en miljospecifik
konfiguration.
--help Visar hjalpskarm och avslutar.
--version
Visar version och avslutar.
FLAGGOR SOM ST"ODS
CFLAGS Flaggor for C-kompilatorn. Standardvardet som satts av
leverantoren innehaller -g och den forvalda optimeringsnivan
(vanligtvis -O2, eller -O0 om miljovariabeln DEB_BUILD_OPTIONS
definierar noopt).
CPPFLAGS
Flaggor for C-forprocesseraren. Forvalt varde: tomt.
CXXFLAGS
Flaggor for C++-kompilatorn. Samma som CFLAGS.
FFLAGS Flaggor for Fortrankompilatorn. Samma som CFLAGS.
LDFLAGS
Flaggor som sands till kompilatorn vid lankning av binarer eller
delade objekt (om lankaren anropas direkt maste -Wl och , tas
bort fran dessa flaggor). Standardvarde: tomt.
FILER
/etc/dpkg/buildflags.conf
Konfigurationsfil for hela systemet.
$XDG_CONFIG_HOME/dpkg/buildflags.conf eller
$HOME/.config/dpkg/buildflags.conf
Anvandarens konfigurationsfil.
MILJ"OVARIABLER
Det finns tva uppsattningar miljovariabler som utfor samma operationer,
den forsta (DEB_flagga_op) bor aldrig anvandas inuti debian/rules). Den
ar tankt for anvandare som vill bygga om kallkodspaketet med andra
byggflaggor. Den andra uppsattningen (DEB_flagga_MAINT_op) bor endast
anvandas i debian/rules av paketansvariga for att andra de slutgiltiga
byggflaggorna.
DEB_flagga_SET
DEB_flagga_MAINT_SET
Denna variabel kan anvandas for att tvinga fram vardet som
returneras for given flagga.
DEB_flagga_STRIP
DEB_flagga_MAINT_STRIP
Denna variabel kan anvandas for att tillhandahalla en
blankstegsavdelad lista med flaggor som kommer att tas bort fran
uppsattningen flaggor som ges for given flagga.
DEB_flagga_APPEND
DEB_flagga_MAINT_APPEND
Denna variabel kan anvandas for att lagga till ytterligare
flaggor till vardet som returneras for given flagga.
DEB_flagga_PREPEND
DEB_flagga_MAINT_PREPEND
Denna variabel kan anvandas for att lagga till ytterligare
flaggor forst i vardet som returneras for given flagga.
DEB_BUILD_MAINT_OPTIONS
Den har variabeln kan anvandas for att sla av/pa olika
hardningsbyggflaggor genom alternativet hardening. Se avsnittet
H"ARDNING for mer information.
H"ARDNING
Du kan anvanda flera kompileringsflaggor (se detaljer nedan) for att
harda den fardiga binaren mot minnesfordarvningsangrepp, eller for att
ge ytterligare varningsmeddelanden under kompileringen. Forutom det som
anges nedan aktiveras dessa som standard for arkitekturer som stoder
dem.
Varje hardningsfunktion kan aktiveras och inaktiveras i miljovariabeln
DEB_BUILD_MAINT_OPTIONS varde 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 anvandas for att aktivera eller
inaktivera alla hardningsfunktioner samtidigt. Du kan till exempel
inaktivera allt och endast aktivera "format" och "fortify" med:
export DEB_BUILD_MAINT_OPTIONS=hardening=-all,+format,+fortify
format Installningen (aktiverad som standard) lagger till -Wformat
-Wformat-security -Werror=format-security till CFLAGS och
CXXFLAGS. Detta kommer att varna om olamplig anvandning av
formatstrangar, och att misslyckas nar formatfunktionerna
anvands pa ett satt som representerar mojliga sakerhetsproblem.
For narvarande varnar detta om anrop till funktionerna printf
och scanf dar formatstrangen inte ar en fast strang och nar det
inte finns nagra formatargument, som i printf(foo); istallet for
printf("%s", foo); Detta kan vara ett sakerhetshal om
formatstrangen kommer fran en obetrodd kalla och innehaller
"%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, for att den har flaggan skall ha nagon effekt,
maste kallkoden ocksa kompileras med -O1 eller hogre.
stackprotector
Installningen (aktiverad som standard) lagger till
-fstack-protector --param=ssp-buffer-size=4 till CFLAGS och
CXXFLAGS. Detta lagger till sakerhetskontroller mot
stackoverskrivningar, vilket gor att manga mojliga
kodinjiceringsangrepp istallet avbryter programmet. I det basta
fallet gor det kodinjiceringsangrepp till overbelastnignsangrepp
eller icke-problem (beroende pa programmet).
Den har funktionen kraver lankning mot glibc (eller ett annat
bibliotek som tillhandahaller __stack_chk_fail), sa det maste
inaktiveras nar du bygger med -nostdlib eller -ffreestanding
eller liknande.
relro Installningen (aktiverad som standard) lagger till -Wl,-z,relro
till LDFLAGS. Vid inlasning av programmet maste lankaren skriva
till flera ELF-minnessektioner. Den har installningen flaggar
till inlasaren att dessa sektioner skall goras skrivskyddade
innan programmet far kontroll. Detta skyddar huvudsaklingen mot
GOT-overskrivningsangrepp.
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 Installningen (inaktiverad som standard) lagger till -fPIE till
CFLAGS och CXXFLAGS, samt -fPIE -pie till LDFLAGS.
Positionsoberoende exekverbara program (PIE) behovs for att dra
fordel av slumpmassig adressrymd (ASLR), vilket stods av vissa
versioner av karnan. Medan ASLR redan kan anvandas for
datautrymmen i stacken och heap:en (brk och mmap), maste
kodomraden forst kompileras som positionsoberoende. Delade
bibliotek gor redan detta (-fPI C), sa de drar automatiskt
fordel av ASLR medan binara .text-regioner maste byggas med PIE
for att uppna ASLR. Nar detta sker ar ROP-angrepp (Return
Oriented Programming) mycket svarare eftersom det inte finns
nagra statiska platser att studsa fran i ett
minnesfordarvningsangrepp.
Detta ar inte kompatibelt med -fPIC sa man maste vara forsiktig
nar man bygger delade objekt.
Eftersom PIE i tillagg implementeras med ett generellt register
kan vissa arkitekturer (huvudsakligen i386) se
prestandaforluster upp till 15% i valdigt textsegment-tunga
programs korning; de flesta korningar ser mindre an 1%.
Arkitekturer med manga generella register (t.ex amd64) ser inte
en lika stor varsta falls-forlust.
F"ORFATTARE
Upphovsrattsskyddat (C) 2010-2011 Raphael Hertzog
Upphovsrattsskyddat (C) 2011 Kees Cook
Detta ar fri programvara; se GNU General Public License version 2 eller
senare for kopieringsvillkor. Det finns INGEN GARANTI.
"OVERS"ATTNING
Peter Krefting och Daniel Nylander.