В моей системе, когда я что-то скомпилировал (с bfin-linux-uclibc-g++
, но это не имеет значения), я получаю сотни предупреждений (не в моей собственной базе кода) относительно одного из флагов компилятора. Я хочу отключить его.Как переустановить опции gcc по умолчанию для компоновщика?
fde encoding in src/SpiMessageUtil.o(.eh_frame) prevents .eh_frame_hdr table being created.
Это orginates от флага в GCC по умолчанию, который передан линкера, который легко проверить путем добавления '-v'
на этапе компиляции:
COLLECT_GCC_OPTIONS=... --eh-frame-hdr ...
Я хотел бы избавиться от этого который действительно определен по умолчанию:
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
Как я могу отменить эту опцию? Я не могу использовать -Wl,--no-eh-frame-hdr
, потому что нет ничего подобного.
Я отключил эту опцию: 'strace/opt/uClinux/bfin-linux-uclibc/bin/bfin-linux-uclibc-gcc 2> & 1 | grep -i spec', перейдите в один из этих каталогов, 'bfin-linux-uclibc-g ++ -dumpspecs> specs' и вручную обновите там файл' specs'. Выглядит уродливо. Удаление флага не избавляется от предупреждений, но кажется, что это ошибка (см. Патч 22 января 2013 года): http://sourceware.org/ml/binutils/2013-01/msg00333.html. Неужели это так, как вы должны это делать, или есть более красивый способ? –