C++ 如何使用预编译的二进制文件安装CLang?
我如何在Ubuntu上安装CLang,使用我下载的CLang的预编译二进制文件 下面是我下载CLang的方式:“LLVM下载页面”->“下载LLVM 3.2”->“Ubuntu-12.04/x86_64的CLang二进制文件”() 然后,我将归档文件扩展到我的Ubuntu 12.04 LTS 64位机器上的一个文件夹中。展开文件夹的内容如下所示:C++ 如何使用预编译的二进制文件安装CLang?,c++,installation,clang,ubuntu-12.04,precompiled-binaries,C++,Installation,Clang,Ubuntu 12.04,Precompiled Binaries,我如何在Ubuntu上安装CLang,使用我下载的CLang的预编译二进制文件 下面是我下载CLang的方式:“LLVM下载页面”->“下载LLVM 3.2”->“Ubuntu-12.04/x86_64的CLang二进制文件”() 然后,我将归档文件扩展到我的Ubuntu 12.04 LTS 64位机器上的一个文件夹中。展开文件夹的内容如下所示: $ ls clang+llvm-3.2-x86_64-linux-ubuntu-12.04 bin docs include lib shar
$ ls clang+llvm-3.2-x86_64-linux-ubuntu-12.04
bin docs include lib share
问题:我下一步做什么?我是否必须自己将这些文件复制到一些文件夹中?如果是,具体是哪些文件夹?我在网上找到的大多数说明都是关于从源代码构建CLang的,这里不适用
我是这些工具的新手。我创建了一个基本的Hello World C++程序,并能够使用GCC和AutoToo工具编译和运行它。现在,我想用CLang编译同一个程序。假设您用g++hello.cpp编译程序 gcc和g++的等价物是clang和clang++。它们位于bin文件夹中 不管你把叮当的文件夹放在哪里,重要的是你以后不要移动它们。因此,将它们放在某个地方(我更喜欢$HOME,我将在下一次使用它) 然后:
export PATH=~/clang+llvm-3.2-x86_64-linux-ubuntu-12.04/bin/:$PATH
现在您可以执行clang++hello.cpp您可以执行中提到的相同步骤 使用GNU tar:
wget <clang-binaries-tarball-url> # or `curl -O <url>`
tar xf clang*
cd clang*
sudo cp -R * /usr/local/
wget#或'curl-O`
tar xf叮当声*
cd叮当声*
sudo cp-R*/usr/local/
如果您的tar
不是GNU并且
- 您得到的归档文件是
,您可以使用.tar.gz
李>tar-xzf
- 如果您有
存档,您可以使用.tar.xz
李>tar-xJf
- 对于
存档,可以使用.tar.bz2
tar-xjf
/home/s
中安装clang。i、 e
/home/s
bin
lib
include
...
我在Ubuntu中做了以下工作:
wget <clang-binaries-tarball-url>
sudo tar -xf <clang+llvm-..tar.xz> --strip-components=1 -C /home/s
# Set the path environmental variable
export PATH=/home/s/bin:$PATH
# Tell ldconfig about new shared library in /home/s/lib
cd /home/s
cat > libs.conf << "END"
/home/s/lib
END
sudo mv libs.conf /etc/ld.so.conf.d/libs.conf
sudo ldconfig
输出为:
clang version 7.0.0 (tags/RELEASE_700/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/s/bin
让我们用ex1.cpp
#include <iostream>
#include <filesystem>
int main() {
for(auto &file : std::filesystem::recursive_directory_iterator("./")) {
std::cout << file.path() << '\n';
}
}
运行它
./ex1
输出:
"./ex1"
"./ex1.cpp"
这些步骤不会解决链接到lib目录中的Clang库的问题。我发现的一个问题是使用Clang的AddressSanitizer。这需要(隐式)链接到Clang库。安装预构建的二进制文件时,我没有解决方案,但我希望我有。您可以按照我为$PATH显示的方式将lib文件夹添加到$LD_LIBRARY_路径。这为我实现了这一点,谢谢。我在
tar xzf
中遇到一个错误,“不是gzip格式”tarxf
解决了这个问题。感谢Matrix,他们似乎改变了tarball压缩。我将其更新为更通用的tarxf
。它不可能直接“解压缩到/usr/local”by@JackWu那里有额外的文件夹级别,因此您需要提取和复制或配置路径env var。。
./ex1
"./ex1"
"./ex1.cpp"