首页  >  文章  >  后端开发  >  “错误:‘全局命名空间中没有名为‘signbit’的成员’Catalina 升级后:解决方案是什么?”

“错误:‘全局命名空间中没有名为‘signbit’的成员’Catalina 升级后:解决方案是什么?”

Patricia Arquette
Patricia Arquette原创
2024-11-18 05:34:02128浏览

Catalina 升级后出现错误:“全局命名空间中没有名为 'signbit' 的成员”

从 Mojave 升级到 macOS Catalina 时,用户在编译时遇到错误使用 的程序header:

error: no member named 'signbit' in the global namespace

此错误源于 Catalina 使用系统完整性保护 (SIP) 清除和保护 /usr/include 的事实。因此,任何希望在此目录中找到 C 头文件的项目都将无法编译。

解决方案:

要解决此问题,需要直接构建系统到适当的标头:

  1. 确保 Xcode 已更新: 使用最新版本的 Xcode 以避免潜在的不兼容性。
  2. 设置CMAKE_OSX_SYSROOT: 使用以下方法之一将此变量设置为 xcrun --show-sdk-path 的结果:

    • set(CMAKE_OSX_SYSROOT /sdk/path)
    • set(CMAKE_CXX_FLAGS "[...] -isysroot /sdk/path")

如果这些步骤解决了问题,请考虑探索在 CMake 中设置这些标志的更好方法。此外,禁用 SIP(​​尽管冒险)可能会提供临时解决方案。但是,建议向仍需要 /usr/include 中的 C 标头的项目报告错误。

以上是“错误:‘全局命名空间中没有名为‘signbit’的成员’Catalina 升级后:解决方案是什么?”的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn