llvm-project:基于 LLVM 技术的编译器基础设施项目

llvm-project

分支21Tags48
文件最后提交记录最后更新时间
2 年前
9 个月前
2 年前
1 年前
5 个月前
7 个月前
8 天前
2 年前
4 个月前
3 年前
2 年前
2 年前
3 年前
2 年前
2 年前
5 个月前
16 天前
7 个月前
3 年前
8 天前
8 个月前
5 个月前
6 个月前
2 年前
3 年前
3 年前
2 年前
1 年前
1 年前
5 年前
5 年前
5 年前
3 年前
2 年前
4 年前
3 年前
1 年前
3 年前
3 年前
9 个月前
9 个月前
5 年前
6 个月前

1、项目介绍

欢迎来到openEuler社区的LLVM项目!本仓库是llvm-project下游仓库。

此仓库包含LLVM项目的源代码,LLVM基础设施是一个用于构建高度优化的编译器、优化器和运行时环境的工具包。

LLVM项目有多个组件。该项目的核心组件被称为“LLVM”,它包含处理中间表示及将其转换为目标文件所需的所有工具(包括汇编器、反汇编器、位码分析器和为位码优化器)、库和头文件。

类C语言使用Clang前端,该组件将C、C++、Objective-C和Objective-C++代码编译成LLVM位码,并使用LLVM将其转换为二进制目标文件。

其他组件包括:C++标准库(libc++)、LLD链接器等。

2、构建指导

首先通过git下载源码,然后通过build.sh脚本一键式构建LLVM。构建方式有直接命令行构建容器化构建两种。

2.1、直接命令行构建

推荐使用openEuler操作系统进行构建,如果您使用其他操作系统,建议使用容器化构建方式。

首先确保系统安装了依赖软件包,可以用如下命令安装。

yum install -y gcc g++ make cmake openssl-devel python3 \
python3-setuptools python-wheel texinfo binutils-devel libatomic

然后可以通过 ./build.sh -h查看当前工程支持的构建选项。通过命令行执行一键式构建,例如:

./build.sh -r -b release -X X86 -j 8

2.2、容器化构建

为了解决由于开发环境差异导致的构建失败和构建产物二进制差异问题,openEuler LLVM项目提供了容器化构建方法。得益于openEuler容器镜像项目,提前制作了llvm-build-deps容器镜像。开发者可以通过build.sh脚本的-C选项启用容器化构建,例如:

./build.sh -C -r -b release -X X86 -j 8   // 添加了-C选项

为解决其他操作系统下(CentOS等)的glibc兼容性问题,openEuler LLVM项目同时提供可选的CentOS构建镜像(当前仅支持AArch64架构)。建议仅在目标系统使用的glibc版本满足 >=2.17 且 <2.34 时使用此镜像。开发者可以通过build.sh脚本的-D选项切换使用的构建容器,例如:

./build.sh -C -D CentOS -r -b release -X AArch64 -j 8   // 添加了-D CentOS

相关依赖:

  • 开发环境需要正确安装了docker应用。
  • 用户加入了docker用户组,使得build.sh脚本执行docker命令时不需要再加sudo命令。可以通过如下命令将当前用户加入docker用户组。
sudo usermod -aG docker ${USER}

注意:第一次执行容器化构建时,脚本会自动从镜像仓库拉取llvm-build-deps容器镜像。

3、贡献指导

1、Fork 本仓库
2、新建 Feat_xxx 分支
3、提交代码
4、新建 Pull Request

4、讨论与求助

4.1、上游社区

4.2、openEuler社区Compiler SIG

几种方式: