首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >16.04 clang: gcc工具链选择不当

16.04 clang: gcc工具链选择不当
EN

Ask Ubuntu用户
提问于 2017-03-29 10:53:49
回答 1查看 2.4K关注 0票数 2

我有两个16.04系统,gcc (5.4.0和6.0.0)和clang3.8 (1:3.8-33ubuntu3.1)。在第一个系统中,clang成功地编译了C++代码;通过添加-v,基本的输出部分是:

代码语言:javascript
复制
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
[...]
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0
 /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/x86_64-linux-gnu/c++/5.4.0
 /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/backward
 /usr/local/include
 /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.

但是,在另一个系统上,它失败了;详细的输出显示了

代码语言:javascript
复制
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0

但是这个版本中的GCC6不包含头,所以编译失败:

代码语言:javascript
复制
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0/../../../../include/c++
 /usr/local/include
 /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
In file included from TimeHelper.cc:1:
./TimeHelper.hh:4:10: fatal error: 'cstdint' file not found
#include <cstdint>

头部存在于/usr/include/c++/5/中,但此处未列出此路径。(安装了libstdc++-5-dev。)

系统是不一样的,但两个品牌新鲜(今天更新)。

如何找出问题的来源?

配置文件中的首选工具链是硬连接的还是建议的?

NB试图将--gcc-toolchain显式地指定为类似于/usr/lib/gcc/x86-64-linux-gnu/5的值,但失败了:似乎clang没有将目录识别为GCC安装路径。与它不同的是,指定手册GCC构建的目标目录成功(但我希望它默认工作)。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2017-09-29 15:32:25

修复后,安装clang4.0(这没有解决问题本身),拆卸休息的clang3.8,gccgo,并重新安装GCC 5从相同的软件包。现在,它选择正确的版本。

由于缺乏选择算法的细节,我无法确切地说明是什么导致了这一结果。不管怎么说,这很管用。

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

https://askubuntu.com/questions/898057

复制
相关文章

相似问题

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