2017-01-08 5 views
6

Вопрос относится к arm-none-eabi-g ++ 6.2 и привязке к newlib-nano.Предварительная обработка с помощью g ++ и specs-файла

Когда я препроцессировать в C-источник с -specs=nano.specs, файл newlib.h из каталога newlib-nano входит:

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 г ++ обычно вызывается …/arm-none-eabi-c++ вместо …/arm-none-eabi-gcc -x c++, но я сделал это, чтобы вырезать небольшую разницу. И: это не меняет вопрос.

Вопрос: Что мне нужно добавить в specs-файл, чтобы C++-файлы включали newlib-nano/newlib.h?

ответ

Смежные вопросы