【问题标题】:how to select a particular gcc-toolchain in clang?如何在 clang 中选择特定的 gcc-toolchain?
【发布时间】:2017-06-17 04:28:44
【问题描述】:

Clang 自动选择版本最高的 gcc-version:

$ clang++ -v main.cpp
clang version 3.8.1-12 
(tags/RELEASE_381/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.4
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.2.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.0.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.2.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.0.1
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.0.1

如何强制 clang 使用不同的 gcc 安装,比如 5.4.1?

我尝试使用 --gcc-toolchain="/usr/lib/gcc/x86_64-linux-gnu/5.4.1" 调用 clang,但没有成功。

【问题讨论】:

  • 欺骗(没有赞成或接受的答案):stackoverflow.com/questions/39218360/…
  • 看起来你需要使用--gcc-toolchain从源代码构建clang
  • @bolov 使用 --gcc-toolchain 构建 clang 不会让我选择我想要的版本(编译后),也不是特别实用
  • 同意。我只是说那里的答案表明无法按照您想要的方式指定它。是的,如果真的没有办法(不包括解决方法),我会非常失望。

标签: c++ linux gcc clang


【解决方案1】:

--gcc-toolchain 的有效路径显然是“/usr”,因为 clang 似乎在寻找 gcc

$PREFIX/{include|lib}/gcc/$PLATFORM/$VERSION/*

因此,作为一种解决方法,您可以通过使用 overlay-fs 创建文件系统或符号链接仅包含一个文件夹的文件夹结构来欺骗 clang 使用特定版本

mkdir $MYTOOLCHAIN
cd $MYTOOLCHAIN
ln -s /usr/include include #for headerfiles
ln -s /usr/bin bin #for tools like ld
mkdir -p lib/gcc/x86_64-linux-gnu/ #clang will deduce what to select
cd lib/gcc/x86_64-linux-gnu/
#link the toolchain we want here
ln -s /usr/lib/gcc/x86_64-linux-gnu/$VERSION $VERSION 
#usage: clang++ --gcc-toolchain=$MYTOOLCHAIN main.cpp

但是也许有更好的方法,通过标志指示 clang 选择版本...

【讨论】:

  • 对于 clang 3.8 和更早版本,确保 $VERSION 是完整的版本号。例如,如果 /usr/lib/gcc/x86_64-linux-gnu/5.4.1 是到 /usr/lib/gcc/x86_64-linux-gnu/5 的链接,请使用“5.4.1”,而不是“5” . clang-3.9+ 可以处理短工具链版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 2020-07-13
  • 2014-11-26
  • 2011-09-27
  • 2014-09-26
  • 2016-08-23
  • 2013-09-22
相关资源
最近更新 更多