无法使用预构建的Clang二进制文件构建cpp:找不到文件wchar.h
无法使用预构建的Clang二进制文件构建cpp:找不到文件wchar.h
我正在使用MacOS 10.15。由于MacOS附带的clang不包含clang-format
,所以我从这里安装了另一个预编译的clang二进制文件。我已将该二进制文件的路径添加到了PATH
变量中。\n
export PATH="$HOME/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin:$PATH"
\n我尝试编译一个简单的程序:\n
#includeint main(int argc, char *argv[]) { std::cout << "Hello world!\n"; return 0; }
\n使用以下命令:\n
clang++ hello.cpp -o hello
\n我得到了以下错误:\n
In file included from hello.cpp:1: In file included from /Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin/../include/c++/v1/iostream:37: In file included from /Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin/../include/c++/v1/ios:214: In file included from /Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin/../include/c++/v1/iosfwd:95: /Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin/../include/c++/v1/wchar.h:118:15: fatal error: 'wchar.h' file not found #include_next^~~~~~~~~ 1 error generated.
\n我发现这个预编译包中附带的wchar.h
在以下目录中:\n
/Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/include/c++/v1/
\n因此我添加了-I
标志:\n
clang++ -I /Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/include/c++/v1 hello.cpp -o hello
\n错误仍然存在。\n如果我使用MacOS附带的clang++
,编译源代码时没有任何问题:\n
# 在没有任何错误的情况下正常工作 /usr/bin/clang++ hello.cpp -o hello
在使用clang预编译二进制文件构建cpp时遇到了问题,错误信息是找不到文件wchar.h。这个问题的原因是你没有正确安装clang-format。为了解决这个问题,你需要将系统恢复到安装其他预编译的clang二进制文件之前的状态,然后使用Homebrew来安装clang-format。
首先,使用以下命令来安装clang-format:
brew install clang-format
另外,clang+llvm-10.0.0-x86_64-apple-darwin不适用于你的Mac。它依赖于系统中不可用的框架,因此你会在系统框架中找不到wchar.h文件而报错。当你安装clang+llvm-10.0.0-x86_64-apple-darwin时,你忽略了框架的依赖关系。而Homebrew会处理这些依赖关系。