GCC ARM NONE> 4.8。*交叉编译器缺少C99数学函数,如果用cxx11标准编译

时间:2015-10-31 11:55:00

标签: gcc arm std

我注意到,如果我在cxx11模式下使用跨ARM GCC版本4.9。*进行编译,则无法访问大多数标准库数学函数。 我试图编译Eigen,因为它有ARM优化,但这只适用于本机编译器。 原因是这些标准库函数都在防护标志内,这可能已被覆盖,直到4.8版本。*

#pragma once
#pragma GCC diagnostic push
    #define RAND_MAX __RAND_MAX
    #pragma GCC diagnostic ignored "-Wshadow"
    #pragma GCC diagnostic ignored "-Wfloat-equal"
    #define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC 1

    #include <AP_Eigen/eigen/Eigen/Core>
    #include <AP_Eigen/eigen/Eigen/Dense>
#pragma GCC diagnostic pop

自4.9。*我再次抱怨,因为在标准库中有更多无用的检查。例如。无法找到std :: lgamma,或者std :: max不存在.. 有人知道在4.9。*中绕过这些警卫标志的好方法吗?另外,我想知道为什么跨越GCC for ARM会这样做?没有理由这样做,因为代码在这些平台上100%运行,并且每个编译器版本都会变得越来越糟糕。

0 个答案:

没有答案