ubuntu系统源码编译clang


前言

在这篇博客中,我们将一起探索如何在Ubuntu系统上从源码编译Clang。这个过程是对Linux系统操作技能的一次锻炼。我们将重点关注具体的操作步骤,从准备编译环境到执行编译命令,旨在为那些希望深入了解编译器背后机制的读者提供一个清晰、易于遵循的指南。

方法步骤

准备工作

在开始之前,确保您的Ubuntu系统已经安装了必要的依赖项。这通常包括构建工具和库文件,如build-essential, cmake, git等。您可以通过运行以下命令来安装这些依赖项:

sudo apt-get update
sudo apt-get install build-essential cmake git

这一步根据情况而定,比如可能遇到cmake版本过低的情况,这就需要源码编译安装cmake,具体的方法这里不再详述。

安装7.4版本以上的gcc

根据最新的编译实践,编译的clang需要至少 GCC 7.4 版本,而我之前的GCC 版本是 7.3.0。为了解决这个问题,需要升级 GCC 到至少 7.4 版本。

  1. 添加工具链测试 PPA

这一步在直接apt install满足要求的情况下可以省略

Ubuntu 的默认软件仓库可能不包含最新版本的 GCC。您可以添加工具链测试 PPA(个人软件包存档),这里通常有更新的版本。运行以下命令:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
  1. 安装新版本的 GCC
sudo apt-get install gcc
  1. 更新默认的 GCC 版本
    下一步比较关键,就是安装新版本后,您可能需要更新系统默认的 GCC 版本。使用 update-alternatives 命令来配置默认的 GCC 版本:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7
  1. 验证 GCC 版本
    验证新版本的 GCC 是否安装成功:
gcc --version

编译安装

参考:Getting Started: Building and Running Clang

  1. 获取源码
    接下来,我们需要从官方仓库克隆Clang的源码。打开终端并运行以下命令:
git clone https://github.com/llvm/llvm-project.git

上面的命令很慢。可以通过创建浅克隆来加快速度。浅克隆可以节省存储空间并加快检出时间。使用以下命令来实现:

最推荐的方法

git clone --depth=1 https://github.com/llvm/llvm-project.git

对于普通用户来说,只是编译的话,这个命令就可以了。但是如果以后有人想要成为贡献者,因为他们无法从浅克隆中推送代码,就需要将其转换为完整克隆。

cd llvm-project
git fetch --unshallow
  1. 配置编译选项
    在编译之前,您需要创建一个构建目录并配置编译选项。这可以通过cmake来完成。
cd llvm-project
mkdir build
cd build
cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../llvm

这些命令会配置编译系统,准备编译Clang和LLVM。

  1. 编译安装
    一切准备就绪后,就可以开始编译过程了。在构建目录中,运行:
make -j$(nproc)
sudo make install

这个过程可能需要一些时间,具体取决于您的系统性能。这样就可以将安装Clang到系统中。

官网安装的办法

这个是刚看到的,补充上来供读者参考,以安装clang 12为例。

  1. 添加LLVM官方软件源:
    LLVM项目提供了一个软件源,可以从中安装最新版本的LLVM和Clang。首先,添加LLVM软件源到您的系统中。打开终端并输入以下命令:
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 12

添加了新的软件源后,更新软件包列表,安装 clang-12 和 libclang-12-dev。

sudo apt update
sudo apt install clang-12 libclang-12-dev

总结

通过本文的步骤,您现在应该能够在Ubuntu系统上成功编译Clang。希望这篇博客对您的技术提升有所帮助。

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值