gpt4 book ai didi

c++ - 如何通过 Clang 和 LibTooling 使用标准库

转载 作者:IT老高 更新时间:2023-10-28 22:41:29 27 4
gpt4 key购买 nike

我想使用 Clang 和 LibTooling 来创建一些 C++ 源代码分析和转换工具。我在 this 之后构建了 Clang 和 LibTooling教程,我已经能够运行和创建一些分析工具,并使用我构建的 Clang 二进制文件编译 C++ 程序。但是,如果我包含标准库中的头文件(在源文件或我的工具中),我会在编译或运行源文件/工具时遇到问题。例如,如果我对以下 C++ 源文件运行 clang-check:

#include <iostream>

int main() {
std::cout << "Hello";
return 0;
}

我收到“ fatal error :找不到‘iostream’文件”。 (注意:我可以编译 C++ 程序,例如带有用户定义类的程序,但不能编译使用标准库的 C++ 程序。)为了解决这个问题,我构建了 libc++(遵循 this 指南,在 llvm 中构建它/project 目录,我在其中构建了 LLVM 和 Clang),但我仍然无法获取 Clang 和使用 libc++ 的工具。现在,如果我尝试使用以下方法编译测试文件:

export CPLUS_INCLUDE_PATH="~/clang-llvm/llvm/projects/libcxx/include"
export LD_LIBRARY_PATH="~/clang-llvm/llvm/projects/libcxx/lib"
~/clang-llvm/llvm/build/bin/clang++ ~/Documents/main.cpp

然后我得到“ fatal error :找不到'unistd.h'文件”。所以我的问题是:如何正确指出 Clang 和我的工具以使用 libc++?

我正在运行 OS X Yosemite 10.10 并使用 Clang 3.6.0。

最佳答案

Clang 带有一些自定义包含。所以通常你有 clang /usr/bin/clang++并且包括在/usr/lib/clang/3.6.1/include

但是 clang 将它们作为相对路径查找:../lib/clang/3.6.1/include

因此请确保可以从 clang++ 二进制文件或您的 libtooling 应用程序访问此相对路径。

关于c++ - 如何通过 Clang 和 LibTooling 使用标准库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27092593/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com