首页 > 解决方案 > arm-none-eabi-g++ 系统包含路径

问题描述

我有以下头文件 Foo.h:

#ifndef _FOO_H_
#define _FOO_H_

#include <type_traits>

class FooC
{
public:
    FooC();
   ~FooC() = default;
};

#endif // _FOO_H_

和对应的源文件Foo.cpp:

#include "Foo.h"

FooC::FooC()
{
}

我可以使用以下命令编译源文件

C:\\GNU-Tools-ARM-Embedded\\6-2017-q2-update\\bin\\arm-none-eabi-g++.exe -IC:/gnu-tools-arm-embedded/6-2017-q2-update/arm-none-eabi/include/c++/6.3.1 -std=gnu++14 -o Foo.cpp.obj -c Foo.cpp

或者

C:\\GNU-Tools-ARM-Embedded\\7-2018-q2-update\\bin\\arm-none-eabi-g++.exe -IC:/gnu-tools-arm-embedded/7-2018-q2-update/arm-none-eabi/include/c++/7.3.1 -std=gnu++14 -o Foo.cpp.obj -c Foo.cpp

但是当我将-IC:/gnu-tools-arm-embedded/...-isystem C:/gnu-tools-arm-embedded/...交换时

C:\\GNU-Tools-ARM-Embedded\\6-2017-q2-update\\bin\\arm-none-eabi-g++.exe -isystem C:/gnu-tools-arm-embedded/6-2017-q2-update/arm-none-eabi/include/c++/6.3.1 -std=gnu++14 -o Foo.cpp.obj -c Foo.cpp

或者

C:\\GNU-Tools-ARM-Embedded\\7-2018-q2-update\\bin\\arm-none-eabi-g++.exe -isystem C:/gnu-tools-arm-embedded/7-2018-q2-update/arm-none-eabi/include/c++/7.3.1 -std=gnu++14 -o Foo.cpp.obj -c Foo.cpp

然后我收到很多编译错误,例如:

In file included from Foo.h:4:0,
                 from Foo.cpp:1:
C:/gnu-tools-arm-embedded/6-2017-q2-update/arm-none-eabi/include/c++/6.3.1/type_traits:68:3: error: template with C linkage
   template<typename _Tp, _Tp __v>
   ^~~~~~~~
...
    C:/gnu-tools-arm-embedded/6-2017-q2-update/arm-none-eabi/include/c++/6.3.1/type_traits:2660:3: error: template with C linkage
       template<typename _Tp>
       ^~~~~~~~

我需要这个包含路径和type_traits的包含,并且不能更改为-I。有人知道这个问题的一个很好的解决方案吗?

谢谢!

标签: c++cross-compiling

解决方案


推荐阅读