- 环境:Ubuntu20.04
- 版本:LLVM 14.0.3
LLVM安装方法有许多,其实主要区别就在于,源码安装可以后续对LLVM进行进一步加工;若只是单纯使用LLVM,则可以直接安装。
本文只是学习并记录笔记,如有错误或不足请谅解指正,谢谢!
直接安装
wget https://apt.llvm.org/llvm.sh |
llvm.sh 内包含安装llvm所需要的其他配件工具,主要通过apt-get安装的
源码编译安装(推荐)
这里使用的LLVM 版本是Github上显示的14.0.3
环境条件
这些工具的安装网上教程很多,这里不再记录,这里我的环境是:
cmake version 3.16.3 |
下载LLVM源码
git clone https://github.com/llvm/llvm-project.git |
我下载的时候是LLVM 14.0.3版本,由于上面的命令较慢,也可以以浅层克隆的形式节约空间及时间(使用这个只能构建最新版本的llvm,对于只想编译的普通用户,此命令可以正常工作。但是如果后来有人成为贡献者,由于他们无法从浅克隆推送代码,因此需要将其转换为完整克隆)
git clone --depth=1 https://github.com/llvm/llvm-project.git |
构建LLVM及Clang
cd llvm-project |
其中,第四行cmake指令的官方原型是:
cmake -G <generator> -DCMAKE_BUILD_TYPE=<type> [options] ../llvm |
这里的参数含义分别是:
- **-G
**:一些常见的构建系统生成器 包括 - Ninja — 用于生成Ninja 构建文件(官方文档言:大多数 llvm 开发人员使用这个)
- Unix Makefiles — 用于生成与 make 兼容的并行 makefile
- Visual Studio — 用于生成 Visual Studio 项目和解决方案
- Xcode — 用于生成 Xcode 项目
- -DCMAKE_BUILD_TYPE:默认情况下llvm编译的是debug版本,在编译release版本的时候需要明确指定编译的类型
- 其他一些选项[options]包括:
- **DLLVM_ENABLE_PROJECTS=’…’**:在编译的时候,会默认只编译llvm的基础库,使用此命令,指定要另外构建的 LLVM 子项目。可以包括以下任何一种:clang、clang-tools-extra、lldb、compiler-rt、lld、polly、cross-project-tests
- DCMAKE_INSTALL_PREFIX=directory:指定要安装 LLVM 工具和库的位置的完整路径名(默认值是
/usr/local
) - DLLVM_ENABLE_ASSERTIONS=On:在启用断言检查的情况下编译(Debug 构建默认为 Yes,所有其他构建类型默认为 No)
执行完最后的ninja install指令,编译安装完后,将build下的bin文件夹添加到环境变量path下
查看版本:(这里不明白为什么显示15.0.0版本,github上却是14.0.3)
$ llvm-as --version |
测试:
|
#将llvm_test.c转换为LLVM IR |
查看生成的IR:
; ModuleID = 'llvm_test.c' |
运行测试:
$ lli llvm_test_1.ll |
至此LLVM的源码编译安装及测试使用完成。
参考:
https://clang.llvm.org/get_started.html
https://llvm.org/docs/GettingStarted.html#checkout-llvm-from-subversion