的問題是指臂-NONE-EABI-G ++ 6.2和鏈接針對newlib納米。預處理用g ++以及規格文件
當我一個進行預處理C-源與-specs=nano.specs
,從目錄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)
但是,如果我喂C++ - 通過相同的編譯器
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>
在C++源代碼和GNU G ++通常是由…/arm-none-eabi-c++
而不是…/arm-none-eabi-gcc -x c++
調用,但我這樣做是爲了能開出小差異。而且:這不會改變這個問題。
問題:爲了讓C++文件包括newlib-nano/newlib.h
,我需要添加什麼特性文件?