无法使用预构建的Clang二进制文件构建cpp:找不到文件wchar.h

12 浏览
0 Comments

无法使用预构建的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

#include 
int 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

\n我在这里这里这里看到了一些帖子,但这些解决方案不适用。

0
0 Comments

在使用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会处理这些依赖关系。

0