【问题标题】:How to fix "error: no member named 'fancy_abort' in namespace 'std::__1'; did you mean simply 'fancy_abort'? _VSTD::abort();"如何修复“错误:命名空间'std::__1'中没有名为'fancy_abort'的成员;你的意思是简单的'fancy_abort'吗?_VSTD::abort();”
【发布时间】:2019-12-26 02:12:42
【问题描述】:

平台:Macos Catalina 10.15.2
Xcode 版本:Xcode 11

我已经多次尝试make-all gcc 来构建我的源代码。但是,我遇到了一个问题:

In file included from ../.././gcc/c/c-objc-common.c:33: 
In file included from /Applications/Xcode11.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/new:85: 
/Applications/Xcode11.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/exception:181:5: error:
      no member named 'fancy_abort' in namespace 'std::__1'; did you mean simply 'fancy_abort'?
    _VSTD::abort();
    ^~~~~~~ /Applications/Xcode11.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:873:15: note:
      expanded from macro '_VSTD'  # _VSTD std::_LIBCPP_ABI_NAMESPACE
              ^ ../.././gcc/system.h:685:13: note: 'fancy_abort' declared here extern void fancy_abort (const char *, int, const char
*) ATTRIBUTE_NORETURN;
            ^ 
1 error generated. 
make[1]: *** [c/c-objc-common.o] Error 1  
make: *** [all-gcc] Error 2

我尝试安装另一个版本的 Xcode。我已经安装了 Xcode6 但还是不行,我找到了solution of this issue。但是当我下载Xcode8.3.3时,它与Catalina 10.15.2不兼容。

【问题讨论】:

    标签: macos gcc


    【解决方案1】:

    我在 mac (mojave 10.14) 上使用 crosstools-ng 使用 gcc 4.9 编译跨平台工具链时遇到了这个问题。

    解决方案:编辑 .build/src/gcc-4.9.4/gcc/system.h 以在 #ifdef __cplusplus 块中添加 #include <map> 其他包含语句的位置。

    问题是在 abort 被包含(通过)之后 定义为 fancy_abort 的宏。因此,当 C++ 标准头文件尝试 要调用 std::abort,他们最终会调用 std::fancy_abort,这当然是 不存在。

    来源:https://gcc.gnu.org/legacy-ml/gcc-bugs/2017-09/msg00154.html

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 2013-06-09
      • 2021-01-24
      • 2021-07-18
      • 2021-01-24
      • 2017-02-13
      相关资源
      最近更新 更多