【发布时间】:2017-03-22 00:41:18
【问题描述】:
我使用clang++ 来编译 C++ 代码。我链接到gcc 标准C++ 库libstdc++。但是,我在我的 Ubuntu 机器上安装了几种不同的 libstdc++。当我运行clang++时,它使用了libstdc++的4.8安装:
andy@andy:~$ clang++-3.5 -v
Ubuntu clang version 3.5.0-4ubuntu2~trusty2 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
Target: i386-pc-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/4.6
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/4.6.4
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/4.8
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/4.8.4
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/4.9.3
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/4.6
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/4.6.4
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/4.8
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/4.8.4
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/4.9.3
Selected GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/4.8
Candidate multilib: .;@m32
Selected multilib: .;@m32
如何告诉clang++ 使用不同版本的libstdc++ 库和标头?具体来说,我想用4.6版本。
【问题讨论】:
-
您是否尝试过使用旧版本的
clang? -
@NarekAtayan 在未安装
gcc4.8 的类似系统中,clang的相同版本(特别是3.4)使用gcc4.6。因此,可以不使用不同版本的clang。 -
嗯,可以是impossible
-
您是否尝试过使用
--gcc-toolchain=/path/to/gcc/prefix命令行选项?如here 所述,它应该使 Clang 使用特定版本的 GCC 工具链,包括libstdc++和clang++:“Clang 将在其自己的 libstdc++ 前缀中查找并在找到时使用它。您还可以添加显式Clang 的前缀以查找带有 --gcc-toolchain=/opt/my/gcc/prefix 标志的 GCC 工具链,并将其传递给编译和链接命令”。
标签: c++ ubuntu gcc clang libstdc++