Clang++ not seeing libc++

Clang++ not seeing libc++

本文关键字:libc++ seeing not Clang++      更新时间:2023-10-16

我刚刚从https://github.com/llvm/llvm/llvm-project.git安装了clang 和libc 。尝试运行时:

clang main.cpp -stdlib=libc++ -lc++abi

其中 main.cpp

#include <iostream>
int main() {
    std::cout << "main>" << std::endl;
}

我有一个错误:

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

-v选项的输出:

clang version 9.0.0 (https://github.com/llvm/llvm-project.git 40046bc8430f0b90d76cef9e6cc62ccc2abcb0b0)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.3.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.3.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.3.0
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
 "/usr/bin/clang" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name main.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -resource-dir /usr/lib/clang/9.0.0 -internal-isystem /usr/local/include -internal-isystem /usr/lib/clang/9.0.0/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir /home/jakub/Documents/Programming/Projects/TraitNet/src -ferror-limit 19 -fmessage-length 93 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/main-48c930.o -x c++ main.cpp -faddrsig
clang -cc1 version 9.0.0 based upon LLVM 9.0.0svn default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/usr/lib/clang/9.0.0/include"
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^~~~~~~~~~
1 error generated.

这可能与包含有关。我将libc++安装到/usr/include(例如,可以在/usr/include/c++/6/iostream上找到iostream)。有没有办法让clang知道文件的位置(iostream不是它唯一抱怨的标题)?

我通过将正确的目录添加到Inclupl搜索路径来解决类似的问题。

此目录必须匹配LIBC 的版本。例如,如果您安装了软件包libc++10-dev,则必须添加/usr/lib/llvm-10/include/c++/v1/

这是调用:

clang main.cpp -stdlib=libc++ -I/usr/lib/llvm-10/include/c++/v1/

如果您不确定要使用哪个文件夹,则可以使用find来找到它:

$ find /usr/ -name iostream
/usr/include/c++/5/iostream
/usr/include/c++/7/iostream
/usr/include/c++/4.4/iostream
/usr/include/c++/8/iostream
/usr/include/c++/4.9/iostream
/usr/include/c++/10/iostream
/usr/include/c++/9/iostream
/usr/include/c++/4.8/iostream
/usr/include/c++/4.7/iostream
/usr/include/c++/4.6/iostream
/usr/lib/llvm-10/include/c++/v1/iostream