2017-03-18 1 views

Antwort

1

Ich habe einige -f Compiler-Optionen in CFLAGS wie -fsanitize = Adresse und jemand mir vor einer Weile vorgeschlagen, dass ich auch diese Optionen in LDFLAGS setzen so habe ich getan. Es hat keine Probleme verursacht.

Nicht nur es wird keine Probleme verursachen, aber das ist die einzige richtige Möglichkeit, um saniertes Programm zu erstellen.

Meine Frage ist, wie kann ich sagen, welche Compiler-Optionen von CFLAGS sollte auch in LDFLAGS gehen? Sind es nur die -f Präfix-Optionen?

Es wird nicht schaden, wenn Sie einfach

LDFLAGS = $(CFLAGS) $(LIBS) 

Compiler-Treiber zu tun (/usr/bin/gcc) weiß, welche für den Linker High-Level-Optionen sind, werden so unnötige Optionen einfach herausgefiltert werden. Für den Fall, fragt man sich, wie dies geschieht, gcc mit -dumpspecs Flagge laufen:

$ gcc -dumpspecs 
... 
*link_command: 
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) %{!fno-use-linker-plugin:%{!fno-lto:  -plugin %(linker_plugin_file)  -plugin-opt=%(lto_wrapper)  -plugin-opt=-fresolution=%u.res  %{!nostdlib:%{!nodefaultlibs:%:pass-through-libs(%(link_gcc_c_sequence))}}  }}%{flto|flto=*:%<fcompare-debug*}  %{flto} %{fno-lto} %{flto=*} %l %{no-pie:} %{pie:-pie} ... 

Das sieht ein bisschen hässlich, aber in Wirklichkeit, ist nur eine Mini-Sprache für die Übersetzung Flagge. Syntaxdetails sind gegeben here (obwohl ich ernsthaft bezweifle, dass Sie müssen über sie wissen).

Verwandte Themen