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

clang++ can not locate c++ header and library

本文关键字:c++ 找不到 clang++      更新时间:2023-10-16

我的操作系统是OS X 10.10.2,C的默认编译器是clang。但这个版本的clang不支持clang 3.4版本中的ubsan(未定义的消毒剂)。我也想用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 Worldn";
    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中,另一个是clang-3.4,位于/usr/local/bin中。前一个可以找到C++头文件,而后一个则找不到。

您是否阅读了 clang的用户文档,尤其是关于命令行选项的部分?顺便说一句, clang的当前版本(2015年3月)是3.6!

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

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

您应该知道clangclang++-v-H选项;它们可能是有用的,至少可以更好地理解你的问题。


附录

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

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

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