clang ++找不到c ++头文件和库

时间:2015-03-21 07:10:30

标签: c++ macos clang

我的操作系统是OS X 10.10.2,C的默认编译器是clang。 但是这个版本的clang不支持ubsan(未定义的消毒剂),它出现在3.4版本的clang中。我也想用KLEE做一些分析。 AFAIK KLEE适用于LLVM-< = 3.4。我决定安装 llvm-3.4和clang-3.4在我的笔记本电脑中。

在我的系统中安装clang-3.4之后,我遇到了编译器无法找到c ++头文件的问题。我在/ usr / local中安装了clang-3.4,我可以在/usr/local/include/c++/4.8.4中找到c ++头文件。如何将此目录添加到clang-3.4的搜索路径以及c ++库中?

以下演示代码:

#include <iostream>
using namespace std;
int main(){
    cout<<"Hellow World\n";
    return 0;
}

当我使用命令clang++ test.cpp编译它时,我收到了错误

test1.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
     ^
1 error generated.

以下是我使用的clang版本

clang version 3.4 (tags/RELEASE_34/final)
Target: x86_64-apple-darwin14.1.0
Thread model: posix

我使用以下shell命令安装llvm-3.4和clang-3.4:

wget http://llvm.org/releases/3.4/llvm-3.4.src.tar.gz \
     http://llvm.org/releases/3.4/clang-3.4.src.tar.gz \
     http://llvm.org/releases/3.4/clang-tools-extra-3.4.src.tar.gz \
     http://llvm.org/releases/3.4/compiler-rt-3.4.src.tar.gz
tar zxf llvm-3.4.src.tar.gz
tar zxf clang-3.4.src.tar.gz -C llvm-3.4/tools
mv llvm-3.4/tools/clang{-3.4,}
tar zxf clang-tools-extra-3.4.src.tar.gz -C llvm-3.4/tools/clang/tools
mv llvm-3.4/tools/clang/tools/{clang-tools-extra-3.4,extra}
tar zxf compiler-rt-3.4.src.tar.gz -C llvm-3.4/projects
mv llvm-3.4/projects/compiler-rt{-3.4,}

cd llvm-3.4
./configure --enable-cxx11  \
                      --enable-bindings=none --enable-shared \
                      --enable-debug-symbols --enable-optimized
make
make install

现在我的操作系统中有两个版本的clang,一个是OSX附带的默认版本,位于/ usr / bin中,另一个是位于/ usr / local / bin中的clang-3.4。前一个可以找到C ++头文件,而后者则不能。

1 个答案:

答案 0 :(得分:1)

您是否阅读了user documentation of clang,尤其是关于command line options的部分? BTW,current(2015年3月)版clang3.6

对于C ++代码,您应该使用clang++命令,而不是clang命令。

您可以将-I-L选项传递给clang++,但您可能错误地安装了clang编译器。

您应该了解-v-H的{​​{1}}和clang选项;它们可能很有用,至少可以了解你的问题。


附加物

BTW,据报道与Clang 3.4合作的一个程序极有可能使用更现代的版本,如Clang 3.5或3.6

您可能有clang++个问题;你应该PATH -d你的Clang-3.4&amp;带有configure的LLvm-3.4程序(如果这样做,重复整个编译器的构建和安装),你可能应该运行--program-suffix=-my-3.4;也许你还需要一些/usr/local/bin/clang++-my-3.4--with-gcc-toolchain选项。

我很确定你应该能够尝试编译或使用你需要Clang-3.4的神秘软件以及更现代的版本,如3.5或3.6;传闻你的MacOSX 10.10.2有一个基于Clang-3.5的系统编译器,它很可能能够编译和使用你的神秘软件。