clang++: fatal error: 'unistd.h' file not found

clang++: fatal error: 'unistd.h' file not found

使用OS X 10.10.2,我下载Clang for Mac OS X v. 3.6.0,并尝试编译一个简单的Hello World程序。

我使用的命令是:
(假设您将 clang 下载到 .

cd .
./clang+llvm-3.6.0-x86_64-apple-darwin/bin/clang++ main.cpp

结果是这样的:

In file included from main.cpp:1:
In file included from ./clang+llvm-3.6.0-x86_64-apple-darwin/bin/../include/c++/v1/iostream:37:
./clang+llvm-3.6.0-x86_64-apple-darwin/bin/../include/c++/v1/__config:23:10: fatal error: 'unistd.h' file not
  found

这是有道理的,因为没有文件 unistd.h,可由

验证
find . -name unistd.h

产生 0 个结果。

我尝试下载 LibC++ source code v. 3.6.0,但即使是其中也不包含 unistd.h。我在哪里可以找到该文件的 official/vanilla 版本,以及它引用和元引用的文件?

unistd.h 不是 C 或 C++ header!这是一个 POSIX header.

您可以安装 XCode,因为它会来自于它,但老实说,我不知道它是否与 Clang 运行时完全兼容。我不是 Mac 人。

也许你可以找到替代品;例如,你不可能 unistd.h 来编译 "Hello world" 程序!

Clang 不包含 c 库或系统头文件,如果您想在 OS X 上编程,您需要安装 Xcode。如果您有更多详细信息,This page不想安装整个 Xcode 包,您可以只使用命令行工具。

安装 Xcode / 命令行工具后,您可以使用 Xcode 附带的 clang 和 gcc 版本,也可以使用您下载的版本,尽管通常更容易使用 Macports or Homebrew 如果您想使用其中任何一个的最新版本。

该错误在 运行 xcode-select --install 后消失。

(我只定期更新 HomeBrew 的 LLVM 和 clang,所以我原来的 macos headers 一定是 ancient/non-existent,直到我使用上面的命令修复它。)