2016-07-07 27 views
1

Ich suche nach den Standard-Compiler-Flags, die während der Kompilierung verwendet werden. Deshalb habe ich den Befehl gcc -Q -v <example.c> die Ausgabe von Interesse sieht wie folgt aus:Was ist der Unterschied zwischen "options enabled" und "options passand"? Usind gcc -Q -v

GNU C (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3) Version 4.8.4 (x86_64-linux-gnu) von GNU zusammengestellt C Version 4.8.4, GMP-Version 5.1.3, MPFR Version 3.1.2-p3, MPC Version 1.0.1

GGC Heuristik: --param GGC-min-expand = 100 --param GGC-Min- hopsize = 131072

Optionen bestanden: -v -imultiarch x86_64-linux-gnu Beispiel.c -mtune = generisch -march = x86-64 -stack-protector -Wform bei -Wformat-Sicherheit

Optionen aktiviert: -faggressive-Loop-Optimierungen -fasynchronous-Abroll-Tabellen -fauto-inc-dec -fbranch-count-reg -fcommon -fdelete-null-pointer-checks -fdwarf2- cfi-asm -fearly-inlining -feliminate-unbenutzt-debug-types -ffunction-cse -fgcse-lm -fgnu-runtime -fgnu-eindeutig -fident -finline-atomics -ira-hoist-pressure -fira-share-save- slots -fira-share-spill-slots -fivopts -fkeep-statisch-contests -fleading-unterstreichen -fmath-errno -fmerge-debug-strings -fmove-loop-invarianten -fpeephole -fprefetch-loop-arrays -freg-struct- return -sched-critical-path-heuristik -fsched-dep-count-heuristik -fsched-group-heuristik -fsched-interblock -fsched-last-insn-heuristik -fsched-rank-heuristik -fsched-spec -fsched-spec- insn-heuristic -fsched-stalled-insns-de -fshow-column -fssigned-zeros -fsplit-ivs-in-entroller -fstack-protector -fstrict-v oilite-bitfields -fsync-libcalls -ftrapping-math -tretree-coalesce-vars -tretree-cselim -tretre-forprop -tretree-loop-if-convert -tretree-loop -im -tretree-loop-ivcanon -tretree-loop- optimize -treree-parallelize-loops = -tree-phiprop -tretre-pta -tretre-reaclo -tree-scev-cprop -tretre-slp-vectorize -tretre-vect-loop-version -funit-at-a-time-funwind -tables -fvar-tracking -fvar-tracking-zuweisungen -fzero-initialisiert-in-bss -m128bit-lang-doppelt -m64 -m80387 -maccumulate-outgoed-args -malign-stringops -mfancy-math-387 -mfp-ret -in-387 -mfxsr -mglibc -mieee-fp -MLONG-double-80 -mmmx -MnO-SSE4 -mpush-args -mred Zone -msse -msse2 -mtls-direct-seg-refs

Ich frage mich jetzt: Was ist der Unterschied zwischen Optionen aktiviert und Optionen bestanden?

Antwort

1

Optionen übergeben sind Optionen in der Befehlszeile hinzugefügt, durch Konfiguration hinzugefügt, wie -march=x86-64 -fstack-protector oder durch Befehlsaufruf, wie -v. Das bedeutet, dass diese Optionen standardmäßig nicht aktiviert sind und durch den Befehl gcc angegeben werden müssen.

Optionen enebled Optionen sind, die aktiviert sind und werden immer mit diesem spezifischen gcc auf dem spezifischen System zu kompilieren verwendet, soweit in Option geben Sie sind nicht einige von ihnen zu deaktivieren.

z. In einer klaren Umgebung ruft gcc example.cexample.c als nur übergebene Option, aber alle Optionen aktiviert immer noch die gleichen.

+0

Bedeutet dies, dass in dieser Kompilierung Optionen übergeben und Optionen aktiviert sind, um example.c zu kompilieren? Warum unterscheiden sie zwischen diesen beiden? – Maximilian

+1

Aufgrund übergebener Optionen sind diese Optionen standardmäßig nicht aktiviert und müssen an den Befehl übergeben werden, um sie zu aktivieren. – LPs

+0

aber am Ende sind alle Compiler-Optionen (Optionen übergeben und Optionen aktiviert) eingestellt, um zu kompilieren, oder?Haben Sie eine Quelle, die das erklärt? – Maximilian