मेरे सिस्टम पर जब मैं कुछ संकलित करता हूं (bfin-linux-uclibc-g++
के साथ लेकिन यह अप्रासंगिक है), मुझे संकलक झंडे में से एक के संबंध में सैकड़ों चेतावनियां (मेरे स्वयं के कोड बेस में नहीं) मिलती हैं। मैं इसे अक्षम करना चाहता हूं।लिंकर को डिफ़ॉल्ट जीसीसी विकल्प कैसे ओवरराल करें?
fde encoding in src/SpiMessageUtil.o(.eh_frame) prevents .eh_frame_hdr table being created.
यह एक डिफ़ॉल्ट जीसीसी ध्वज जो लिंकर को सौंप दिया जाता है, जो संकलन चरण पर '-v'
जोड़कर देखना आसान है कि से orginates:
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
का उपयोग नहीं कर सकता, क्योंकि परिभाषित की तरह कुछ भी नहीं है।
मैंने इस विकल्प को अक्षम कर दिया: 'स्ट्रेस/ऑप्ट/यूक्लिनक्स/बीएफआईएन-लिनक्स-यूक्लिब/बिन/बीफिन-लिनक्स-यूक्लिब-जीसीसी 2> और 1 | grep -i spec', इन निर्देशिकाओं में से किसी एक पर जाएं, 'bfin-linux-uclibc-g ++ -dumpspecs> specs' और मैन्युअल रूप से 'specs' फ़ाइल को अपडेट करें। यद्यपि बदसूरत लग रहा है। ध्वज को हटाने से चेतावनियों से छुटकारा नहीं मिलता है, लेकिन यह एक बग प्रतीत होता है (पैच 22 जनवरी 2013 देखें): http://sourceware.org/ml/binutils/2013-01/msg00333.html। क्या यह वास्तव में आपको ऐसा करने के लिए माना जाता है, या क्या कोई और सुंदर तरीका है? –