2017-01-08 21 views
6

के साथ प्रीप्रोकैसिंग प्रश्न बांह-नो-एबी-जी ++ 6.2 और न्यूलिब-नैनो के खिलाफ लिंक करने का संदर्भ है।g ++ और specs-file

मैं -specs=nano.specs के साथ एक सी स्रोत preprocess है, निर्देशिका newlib-nano से फ़ाइल newlib.h शामिल है:

echo '#include <string.h>' |\ 
/opt/gcc-arm-none-eabi-6_2-2016q4/bin/arm-none-eabi-gcc -specs=nano.specs -x c -E - |\ 
grep '^# 1 .*newlib\.h' 

आउटपुट # 1 "/opt/gcc-arm-none-eabi-6_2-2016q4/arm-none-eabi/include/newlib-nano/newlib.h" 1 3 4 (उम्मीद के रूप में)। इसका कारण यह है फ़ाइल nano.specs (दूसरों के बीच) शामिल हैं लाइनों

%rename cpp  nano_cpp 
  
*cpp: 
-isystem =/include/newlib-nano %(nano_cpp) 

लेकिन अगर मैं एक सी ++ फ़ीड - एक ही संकलक

echo '#include <string.h>' |\ 
/opt/gcc-arm-none-eabi-6_2-2016q4/bin/arm-none-eabi-gcc -specs=nano.specs -x c++ -E - |\ 
grep '^# 1 .*newlib\.h' 

के माध्यम से स्रोत उत्पादन पढ़ता # 1 "/opt/gcc-arm-none-eabi-6_2-2016q4/arm-none-eabi/include/newlib.h" 1 3

दूसरे शब्दों में: चश्मा-फ़ाइल को अनदेखा किया जाता है।

मुझे पता है कि मैं सी ++ स्रोतों में <cstring> बजाय <string.h> शामिल हैं और कि जीएनयू जी ++ सामान्यतः …/arm-none-eabi-c++ बजाय …/arm-none-eabi-gcc -x c++ से शुरू हो जाती है लेकिन मैंने किया था कि छोटे अंतर बाहर उत्कीर्ण करने के लिए करना चाहिए हूँ। और: यह मामला नहीं बदलता है।

प्रश्न: सी ++ - फ़ाइलों को newlib-nano/newlib.h में शामिल करने के लिए मुझे चश्मा-फ़ाइल में क्या जोड़ना है?

उत्तर