2017-01-08 41 views
6

的問題是指臂-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,我需要添加什麼特性文件?

回答