当前位置: 首页>>技术教程>>正文


安装clang-3.5软件包后找不到clang和clang ++

, ,

问题描述

安装完clang-3.5程序包后,在命令行上键入clangclang++会给我一条消息,指出可以在那些程序中找到哪些程序包。尝试再次运行clang-3.5的安装,apt指出它已安装且为最新版本。

原始安装使用以下命令完成:

sudo apt-get install clang-3.5 llvm

build-essential先前已安装。

关于可能发生的事情有什么想法吗?

最佳方法

它在那里,但仍称为clang-3.5。

您可以像clang-3.5(或clang++-3.5)那样执行它,也可以像我一样设置它的符号链接(安装常规的clang无效):

sudo ln -s /usr/bin/clang-3.5 /usr/bin/clang
sudo ln -s /usr/bin/clang++-3.5 /usr/bin/clang++

也许是丑陋的work-around;但至少现在可以使用:)

次佳方法

将clang用作默认ccc++的正确方法是使用update-alternatives

It is possible for several programs fulfilling the same or similar functions to be installed on a single system at the same time. For example, many systems have several text editors installed at once. This gives choice to the users of a system, allowing each to use a different editor, if desired, but makes it difficult for a program to make a good choice of editor to invoke if the user has not specified a particular preference.

因此,您首先需要添加clang-3.5clang++-3.5作为替代,例如gccg++

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang-3.5 100
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-3.5 100

如果您需要随时切换回gccg++,则可以使用--config选项:

sudo update-alternatives --config c++

第三种方法

在Ubuntu 15.04上,您还可以沿着clang-x.x软件包安装clang软件包。然后,您可以键入clang ++,并且应该找到相应的可执行文件。

sudo apt-get install clang

第四种方法

添加到Yan Foto的答案中(以防万一,您的目标是获得可用的clang,但不一定将其用作cc),实际上,您可以使用以下命令一次性添加整个程序集:

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.8 380 \
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 \
--slave /usr/bin/clang-check clang-check /usr/bin/clang-check-3.8 \
--slave /usr/bin/clang-query clang-query /usr/bin/clang-query-3.8 \
--slave /usr/bin/clang-rename clang-rename /usr/bin/clang-rename-3.8

(请注意,每个Clang版本随附的二进制文件集可能有所不同,例如3.6确实具有clang-tblgen,而3.8没有。)

如果对安装的每个版本的clang重复此操作,则只需使用一个update-alternatives命令就可以在它们之间进行切换。

(与此同时,显然,关于是否将这些链接包含在Ubuntu软件包中的争论仍在持续进行:https://bugs.launchpad.net/ubuntu/+source/llvm-3.1/+bug/991493)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10860.html,未经允许,请勿转载。