Auf meinem System, wenn ich etwas kompiliere (mit bfin-linux-uclibc-g++
, aber das ist irrelevant), bekomme ich Hunderte von Warnungen (nicht in meinem eigenen Code-Basis) in Bezug auf eines der Compiler-Flags. Ich möchte es deaktivieren.Wie Standard-GCC-Optionen auf den Linker überschreiben?
fde encoding in src/SpiMessageUtil.o(.eh_frame) prevents .eh_frame_hdr table being created.
Dieses wird von einem Standard-gcc-Flag entstammt, die an den Linker übergeben wird, die durch Zugabe von '-v'
der Zusammenstellung Schritt zu prüfen, ist einfach:
COLLECT_GCC_OPTIONS=... --eh-frame-hdr ...
Ich möchte loswerden diese Option, die tatsächlich standardmäßig definiert ist:
bfin-linux-uclibc-g++ -dumpspecs | grep frame-hdr
%{!static:--eh-frame-hdr}\
%{mfdpic: -m elf32bfinfd -z text} %{shared} %{pie} \
%{static:-dn -Bstatic} %{shared:-G -Bdynamic} \
%{!shared: %{!static: %{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker \
%{mglibc:%{muclibc:%e-mglibc and -muclibc used together;:%e-mglibc not supported for this target};:/lib/ld-uClibc.so.0 \
}}}\
%{static}} -init __init -fini __fini
Wie kann ich diese Option überschreiben? Ich kann -Wl,--no-eh-frame-hdr
nicht verwenden, weil es nichts dergleichen definiert ist.
Ich habe die Option deaktiviert: 'strace/opt/uClinux/bfin-linux-uclibc/bin/bfin-linux-uclibc-gcc 2> & 1 | grep -i spec', gehe zu einem dieser Verzeichnisse, bfin-linux-uclibc-g ++ -dumpspecs> specs' und aktualisiere die 'specs'-Datei dort manuell. Sieht aber hässlich aus. Durch das Entfernen der Flagge werden die Warnungen nicht gelöscht, aber es scheint sich um einen Fehler zu handeln (siehe Patch 22 Jan. 2013): http://sourceware.org/ml/binutils/2013-01/msg00333.html. Soll das tatsächlich so sein, oder gibt es einen schöneren Weg? –