clang++ 找不到 c++ 头文件和库
clang++ can not locate c++ header and library
我的 OS 是 OS X 10.10.2,C 的默认编译器是 clang。
但是这个版本的 clang 不支持 3.4 版 clang 中的 ubsan (undefined sanitizer)。我也想用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
现在我的 OS 中有两个版本的 clang,一个是 OSX 中的默认版本,位于 /usr/bin 中,另一个是 clang-3.4,位于 /usr/local/箱。前者能找到C++头文件,后者不能。
你读过 user documentation of clang
notably the section on command line options ? BTW, current (march 2015) version of clang
is 3.6!
对于 C++ 代码,您应该使用 clang++
命令,而不是 clang
命令。
您可能将 -I
和 -L
选项传递给 clang++
,但您可能错误地安装了 clang
编译器。
您应该知道 clang
或 clang++
的 -v
和 -H
选项;它们可能会有用,至少可以更好地了解您的问题。
附录
顺便说一句,据报道可与 Clang 3.4 一起工作的程序极有可能与更现代的版本一起工作,例如 Clang 3.5 或 3.6
您可能遇到了 PATH
问题;你应该 configure
-d 你的 Clang-3.4 & LLvm-3.4 程序 --program-suffix=-my-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 的系统编译器,它很可能能够编译和使用你的神秘软件。
我的 OS 是 OS X 10.10.2,C 的默认编译器是 clang。 但是这个版本的 clang 不支持 3.4 版 clang 中的 ubsan (undefined sanitizer)。我也想用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
现在我的 OS 中有两个版本的 clang,一个是 OSX 中的默认版本,位于 /usr/bin 中,另一个是 clang-3.4,位于 /usr/local/箱。前者能找到C++头文件,后者不能。
你读过 user documentation of clang
notably the section on command line options ? BTW, current (march 2015) version of clang
is 3.6!
对于 C++ 代码,您应该使用 clang++
命令,而不是 clang
命令。
您可能将 -I
和 -L
选项传递给 clang++
,但您可能错误地安装了 clang
编译器。
您应该知道 clang
或 clang++
的 -v
和 -H
选项;它们可能会有用,至少可以更好地了解您的问题。
附录
顺便说一句,据报道可与 Clang 3.4 一起工作的程序极有可能与更现代的版本一起工作,例如 Clang 3.5 或 3.6
您可能遇到了 PATH
问题;你应该 configure
-d 你的 Clang-3.4 & LLvm-3.4 程序 --program-suffix=-my-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 的系统编译器,它很可能能够编译和使用你的神秘软件。