问题描述
安装完clang-3.5
程序包后,在命令行上键入clang
或clang++
会给我一条消息,指出可以在那些程序中找到哪些程序包。尝试再次运行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用作默认cc
和c++
的正确方法是使用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.5
或clang++-3.5
作为替代,例如gcc
和g++
:
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
如果您需要随时切换回gcc
或g++
,则可以使用--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)