Macos 找不到stdio.h

Macos 找不到stdio.h,macos,Macos,我正在使用macOS 我正在尝试构建mozilla central的代码 运行命令/mach build时,编译步骤生成失败。以下是相关的堆栈跟踪: stack backtrace: 0:20.24 0: 0x10436b5ff - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::hed04c7a1477ef1e3 0:20.24 1: 0x10434499d - std::sys_

我正在使用macOS

我正在尝试构建mozilla central的代码

运行命令
/mach build
时,编译步骤生成失败。以下是相关的堆栈跟踪:

stack backtrace:
 0:20.24    0:        0x10436b5ff - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::hed04c7a1477ef1e3
 0:20.24    1:        0x10434499d - std::sys_common::backtrace::print::h336400f22676933f
 0:20.24    2:        0x104373bd3 - std::panicking::default_hook::{{closure}}::h0d6700a02d682978
 0:20.24    3:        0x10437395c - std::panicking::default_hook::h90363c6d6ac04260
 0:20.24    4:        0x1043742fb - std::panicking::rust_panic_with_hook::h81c4f3add25e6667
 0:20.24    5:        0x1043740ce - std::panicking::continue_panic_fmt::hfa057b7c1de88179
 0:20.24    6:        0x104374020 - std::panicking::begin_panic_fmt::hd1123702300ea9f2
 0:20.24    7:        0x1035f4e6d - build_script_build::build_gecko::bindings::write_binding_file::h2d9a397b93e6a614
 0:20.24    8:        0x1035f651c - build_script_build::build_gecko::bindings::generate_bindings::ha066bc11b076e01d
 0:20.24    9:        0x1043808fe - __rust_maybe_catch_panic
 0:20.24   10:        0x1035eea9f - std::panicking::try::hcbd901ede6e8004c
 0:20.32   11:        0x1035e335c - <F as alloc::boxed::FnBox<A>>::call_box::h638a7c5eb8c94414
 0:20.33   12:        0x104373037 - std::sys_common::thread::start_thread::h78b1dd404be976ad
 0:20.33   13:        0x1043436c8 - std::sys::unix::thread::Thread::new::thread_start::h27c6becca8cf44e0
 0:20.33   14:     0x7fff636208cc - _pthread_body
 0:20.33   15:     0x7fff6362083e - _pthread_start
 0:20.33 /usr/local/Cellar/llvm/6.0.1/include/c++/v1/stdio.h:108:15: fatal error: 'stdio.h' file not found
 0:20.33 /usr/local/Cellar/llvm/6.0.1/include/c++/v1/stdio.h:108:15: fatal error: 'stdio.h' file not found, err: true
 0:20.37 thread '<unnamed>' panicked at 'Failed to generate bindings
联机列出的解决方案是使用以下方法安装xcode命令行工具:

xcode-select --install

我已经这样做了。

根本原因是缺少
/usr/include
目录

安装命令行工具(
xcode-select--install
)有时不会自动添加它

显示正确的方式: 安装命令行工具后 在以下位置安装软件包:

# run this in Terminal
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
此后,


你应该有一个带有头文件的目录
/usr/include

我也有同样的问题。试图通过
xcode-select--install
安装命令行工具,但没有成功

经过进一步研究,我发现您可以在苹果官方开发者支持网站()上下载命令行工具

搜索命令并下载第一个建议。 运行.dmg文件,看看是否有效


对我来说太棒了

我在编译R软件包时遇到了同样的问题,运行
xcode select--install
macOS_SDK_headers_for_macOS_10.14。pkg
并没有解决这个问题

我发现苹果方面似乎对macOS 10.14和10.15有些混淆,因为我使用最新的xcode 11.0(11A420a)运行Mojave(10.14),当clang编译时,它会在

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

但是只有MacOSX10.15.sdk(以及其他东西)存在。我用我的电脑解决了这个问题

pushd/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
sudo ln-s MacOSX.sdk MacOSX10.14.sdk
popd


现在我可以在RStudio中再次安装软件包了。

这是对Rick Li的评论。它太长,无法放入评论区

Rick Li提供的解决方案不是正确方法所必需的。这只是最简单的方法。根据:

…如果您是此类软件的维护者,我们鼓励您更新您的项目以使用SDK,或针对阻止您这样做的问题提交错误报告。作为一种解决方法,提供了一个额外的包,用于将标头安装到基本系统。在将来的版本中,将不再提供此软件包

因此,正确的方法是联系Mozilla团队,让他们的应用程序在没有黑客的情况下无法构建。它最终会破裂


如果你不认真对待这件事,它将来会咬你的。我还记得那个苹果。现在他们在Macos10.15(Catalina)中正式禁用了它,我听到到处都有人在哭。对您的选择负责。

尝试将
SDKROOT
显式设置到系统SDK:

export-SDKROOT=$(xcrun-sdkmacosx-show-sdk路径)
这样做可以避免在
/usr
中创建符号链接

例如,如果您安装了另一个编译器(例如,brew的gcc),则此错误可能会反复出现。设置
SDKROOT
变得如此普遍,将其添加到
~/.bash_profile
可能是一个好主意。我(突然)在编译自己的项目时遇到了同样的问题-找不到

运行
xcode选择--install

xcode-select: error: command line tools are already installed, use "Software Update" to install updates
以下步骤对我有效:

  • 打开Xcode一次,允许它安装必要的组件
  • 删除CMake缓存文件,然后重试CMake和生成

  • 我使用的是macOS Big Sur 11.2.3,Xcode版本为12.5。

    这并不能真正回答问题。如果您有不同的问题,可以单击以提问。一旦你有足够的时间,你也可以吸引更多的注意力为什么它不能回答这个问题。在这之后,stdio.h lib被找到了。请注意,
    /usr/include
    已被弃用,并将最终消失。这是唯一一个对我有效的解决方案。苹果公司无法在其旗舰开发环境中正确使用基本的工具链(十多年来一直无法做到这一点),这令人震惊。谢谢。@Qix是那些需要修复源代码的应用程序作者。苹果公司明确表示,这是不赞成的。@FranklinYu到底什么是不赞成的?新安装时应正确设置默认系统路径。这里没有任何借口。@Qix MONICAWASPROTED取决于
    /usr/include
    中的库,不推荐使用。应用程序作者不应该在这里假设任何东西。你说的“正确”是什么意思?你是说“和Linux一样”吗?我可能错了,但我不记得POSIX定义了库应该在哪里。不过Linux有FHS。它是
    SDKROOT
    还是
    SDK\u ROOT
    ?最好保持一致,谢谢。通过xcode的整个工具链是疯狂的。这也解决了升级到Catalina后的一个问题,几乎所有与xcode select工具链相关的东西都搞乱了。谢谢这个给我修好了!已添加到我的shell配置:)
    xcode-select: error: command line tools are already installed, use "Software Update" to install updates