arm-none-eabi-g ++系统包含路径

时间:2018-08-01 14:11:49

标签: c++ cross-compiling

我有以下头文件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 。有人知道这个问题很好的解决方案吗?

谢谢!

0 个答案:

没有答案