2017-01-08 18 views
6

Câu hỏi đề cập đến arm-no-eabi-g ++ 6.2 và liên kết với newlib-nano.Xử lý trước bằng g ++ và thông số kỹ thuật

Khi tôi preprocess một C-nguồn với -specs=nano.specs, các tập tin từ thư mục newlib.hnewlib-nano được bao gồm:

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' 

đầu ra # 1 "/opt/gcc-arm-none-eabi-6_2-2016q4/arm-none-eabi/include/newlib-nano/newlib.h" 1 3 4 (như mong đợi). Điều này là do các tập tin nano.specs chứa (trong số những người khác) các dòng

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

Nhưng nếu tôi ăn một C++ - Nguồn qua cùng một trình biên dịch

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' 

đầu ra đọc # 1 "/opt/gcc-arm-none-eabi-6_2-2016q4/arm-none-eabi/include/newlib.h" 1 3.

Nói cách khác: Thông số kỹ thuật bị bỏ qua.

Tôi biết rằng tôi nên bao gồm <cstring> thay vì <string.h> trong nguồn C++ và GNU g ++ thường được gọi bởi …/arm-none-eabi-c++ thay vì …/arm-none-eabi-gcc -x c++ nhưng tôi đã làm điều đó để carve ra nhỏ chênh lệch . Và: điều này không thay đổi vấn đề.

Câu hỏi: Tôi phải thêm gì vào tệp thông số để cho phép tệp C++ - bao gồm newlib-nano/newlib.h?

Trả lời

Các vấn đề liên quan