clang++找不到c++头和库
clang++ can not locate c++ header and library
我的操作系统是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
编译器。
您应该知道clang
或clang++
的-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的系统编译器,它很可能能够编译并使用你的神秘软件。
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 找不到Linux Visual Studio代码C++文件