Предварительная обработка с g ++ и spec-файлом

Вопрос касается arm-none-eabi-g ++ 6.2 и ссылок на newlib-nano.

Когда я препроцессировать С-источник с -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,

Другими словами: specs-файл игнорируется.

Я знаю, что я должен включить <cstring> вместо <string.h> в источниках C ++ и что GNU g ++ обычно вызывается …/arm-none-eabi-c++ вместо …/arm-none-eabi-gcc -x c++ но я сделал это, чтобы вырезать маленький разница. И: это не меняет дело.

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

6

Решение

Это была ошибка (https://bugs.launchpad.net/gcc-arm-embedded/+bug/1661882). Это было исправлено. Это будет в «6-2017-q1-update».

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]