W moim systemie, gdy kompiluję coś (z bfin-linux-uclibc-g++
, ale to nie ma znaczenia), otrzymuję setki ostrzeżeń (nie w mojej własnej bazie kodu) w odniesieniu do jednej z flag kompilatora. Chcę to wyłączyć.Jak przełączyć domyślne opcje GCC na linker?
fde encoding in src/SpiMessageUtil.o(.eh_frame) prevents .eh_frame_hdr table being created.
Ten orginates z flagą domyślną gcc, który przekazał do łącznika, który jest łatwy do sprawdzenia przez dodanie '-v'
na etapie kompilacji:
COLLECT_GCC_OPTIONS=... --eh-frame-hdr ...
chciałbym pozbyć się tego opcja, która jest domyślnie zdefiniowana:
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
Jak mogę zmienić tę opcję? Nie mogę użyć -Wl,--no-eh-frame-hdr
, ponieważ nic takiego nie jest zdefiniowane.
Wyłączyłem opcję: 'strace/opt/uClinux/bfin-linux-uclibc/bin/bfin-linux-uclibc-gcc 2> & 1 | grep -i spec', przejdź do jednego z tych katalogów, 'bfin-linux-uclibc-g ++ -dumpspecs> specs' i ręcznie zaktualizuj tam plik' specs'. Wygląda jednak brzydko. Usunięcie flagi nie eliminuje ostrzeżeń, ale wydaje się, że jest to błąd (zobacz poprawkę 22 stycznia 2013 r.): Http://sourceware.org/ml/binutils/2013-01/msg00333.html. Czy rzeczywiście tak powinieneś to zrobić, czy jest tam piękniejszy sposób? –