首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clang在我的ubuntu18.04上没有找到c++ stdlib,但是它在一个全新的安装上找到了。我打碎了什么?

clang在我的ubuntu18.04上没有找到c++ stdlib,但是它在一个全新的安装上找到了。我打碎了什么?
EN

Ask Ubuntu用户
提问于 2020-02-20 08:19:34
回答 1查看 9K关注 0票数 8

我已经建立了一个github软件包一段时间了..。一个新的版本出来了,我来建造它。它使用clang6,这是我的ubuntu的默认值,ubuntu18.04

现在,它无法编译,无法找到标准的包含。在一只股票上,全新的ubuntu 18.04有效。所以我做了一件已经破裂的事。我使用的是一个自定义内核,基于ubutntu (所以5.3)。我正在应用一个小补丁来恢复英特尔i915省电。

我可以简化这个问题:

代码语言:javascript
复制
$ more test.cc
#include <vector>

当我这样做的时候,它是有效的:

代码语言:javascript
复制
clang -c test.cc -v -stdlib=libc++

此外,在一个股票18.04.4,它的工作后,我要安装clang。

但在我的笔记本电脑上,它失败了:

代码语言:javascript
复制
clang -c test.cc -v 
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/9
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.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Candidate multilib: .;@m64
Selected multilib: .;@m64
 "/usr/lib/llvm-6.0/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test.cc -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 -coverage-notes-file /home/tim/test.gcno -resource-dir /usr/lib/llvm-6.0/lib/clang/6.0.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++ -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/x86_64-linux-gnu -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/backward -internal-isystem /usr/include/clang/6.0.0/include/ -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-6.0/lib/clang/6.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/tim -ferror-limit 19 -fmessage-length 232 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o test.o -x c++ test.cc
clang -cc1 version 6.0.0 based upon LLVM 6.0.0 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/backward"
ignoring nonexistent directory "/include"
ignoring duplicate directory "/usr/include/clang/6.0.0/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++
 /usr/include/clang/6.0.0/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
test.cc:1:10: fatal error: 'vector' file not found
#include <vector>
         ^~~~~~~~
1 error generated.

更新:我找到了这篇文章:https://stackoverflow.com/a/54926827/401226,上面写着: /usr/lib/在我的笔记本电脑上,它是版本9。实际上,我安装了版本9 gcc,但我没有v9 stdlib (libstdc++-9 dev)。

我没有安装g++-9。

EN

回答 1

Ask Ubuntu用户

发布于 2020-02-20 09:02:57

以下是我学到的:

默认情况下,clang会查找gcc标准的C++库,如果不起作用,它就会停止。

它寻找最高版本。最高版本由gcc安装的最高版本决定。因此,如果您没有安装一个与您的最高版本gcc匹配的g++,当它第一次找不到libstdc++时,clang就放弃了。

所以我有gcc,但是我没有g++-9。

代码语言:javascript
复制
apt install g++-9

修正了在安装匹配的libstdc++-9.dev时出现的问题

票数 10
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1211743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档