首页
/ 基于Ubuntu构建LLVM-Tutor开发环境的Docker指南

基于Ubuntu构建LLVM-Tutor开发环境的Docker指南

2025-07-10 01:53:01作者:裴麒琰

概述

本文将详细介绍如何使用Docker快速搭建LLVM-Tutor项目的开发环境。LLVM-Tutor是一个面向LLVM初学者的教程项目,通过这个Docker配置,开发者可以轻松获得一个包含所有必要依赖的隔离开发环境。

环境准备

基础镜像选择

我们选择Ubuntu 22.04作为基础镜像,这是一个长期支持版本(LTS),提供了良好的稳定性和兼容性。

时区设置

为了避免在安装过程中出现交互式时区选择提示,我们预先设置了环境变量:

ENV TZ=Europe/London
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

依赖安装

基础工具

安装构建LLVM-Tutor所需的基础工具链:

  • Git:用于代码版本控制
  • CMake:项目构建系统
  • Ninja:高效的构建工具
  • Build-essential:基础编译工具链
  • Python3:测试框架依赖
RUN apt-get update && apt-get install -y \
    git \
    cmake \
    ninja-build \
    build-essential \
    python3-minimal python3-pip\
    wget \
    libzstd-dev \
    software-properties-common

LLVM安装

我们通过LLVM官方APT仓库安装LLVM-19版本:

  1. 添加LLVM官方GPG密钥
  2. 添加APT仓库源
  3. 安装LLVM-19相关组件
RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
RUN apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-19 main"
RUN apt-get install -y llvm-19 llvm-19-dev llvm-19-tools clang-19

测试环境配置

LIT安装

LLVM集成测试框架(LIT)是LLVM项目的标准测试工具,我们通过pip安装:

RUN pip3 install lit

LLVM-Tutor项目构建

项目克隆

从代码仓库克隆LLVM-Tutor项目到容器内的指定目录:

RUN git clone https://github.com/banach-space/llvm-tutor $TUTOR_DIR

HelloWorld示例构建

构建HelloWorld示例项目,这是一个简单的LLVM pass示例:

RUN mkdir -p $TUTOR_DIR/hello-world-build \
    && cd $TUTOR_DIR/hello-world-build \
    && cmake -G Ninja -DLT_LLVM_INSTALL_DIR=$LLVM_DIR ../HelloWorld \
    && ninja

HelloWorld测试

使用clang生成LLVM IR,然后通过opt工具运行HelloWorld pass进行测试:

RUN cd $TUTOR_DIR/hello-world-build && /usr/bin/clang-19 -S -O1 -emit-llvm ../inputs/input_for_hello.c -o input_for_hello.ll
RUN cd $TUTOR_DIR/hello-world-build && /usr/bin/opt-19 -load-pass-plugin ./libHelloWorld.so -passes=hello-world -disable-output input_for_hello.ll 2>&1 | grep "(llvm-tutor) Hello from: foo"

完整项目构建与测试

构建整个LLVM-Tutor项目并运行所有测试用例:

RUN mkdir -p $TUTOR_DIR/build \
    && cd $TUTOR_DIR/build \
    && cmake -DLT_LLVM_INSTALL_DIR=$LLVM_DIR ../ \
    && make -j $(nproc --all) \
    && lit test/

使用指南

  1. 构建Docker镜像:
docker build -t=llvm-tutor:llvm-19 .
  1. 运行容器:
docker run --rm -it --hostname=llvm-tutor llvm-tutor:llvm-19 /bin/bash

进入容器后,您可以直接开始LLVM pass的开发工作,所有必要的工具和环境都已配置完成。

总结

这个Docker配置为LLVM-Tutor项目提供了一个完整的开发环境,包含了从LLVM工具链到测试框架的所有必要组件。通过容器化部署,开发者可以避免复杂的本地环境配置,快速投入到LLVM pass的学习和开发中。