LLVM之自定义clang插件(一)环境准备

作者:Rem ㅤ | 发布时间:

LLVM之自定义clang插件(一)环境准备

介绍

什么是LLVM

LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本1

什么是clang?

Clang是一个C++编写、基于LLVM、发布于LLVM BSD许可证下的C/C++/Objective-C/Objective-C++编译器2

设备及操作系统要求

操作系统:Linux操作系统,本人操作系统:Ubuntu 20.04

设备最低需要:8核20G内存 + 25G硬盘 ,如果达不到要求轻则编译超过三个小时,重则设备宕机。

我是用2核4G服务器结果在四五个小时后宕机:

image-20221012084954523

后使用64核256G服务器编译速度飞起:

image-20221012085800029

环境准备

编译工具ninja

安装编译工具ninja

 sudo apt-get install ninja-build

下载项目

项目地址:https://github.com/llvm/llvm-project.git

将此项目clone到本地即可。

编译

进入/llvm-project/目录下执行一下命令:

 cmake -S llvm -B build -G Ninja -DLLVM_ENABLE_PROJECTS='clang' -DCMAKE_BUILD_TYPE=Release

即设置项目编译模式为clang,编译形式为Release。之后会自动在/llvm-project/目录下生成/build/目录,进入此目录,即/llvm-project/build/下执行一下命令:

 cmake -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_ENABLE_PROJECTS=clang -DBUILD_SHARED_LIBS=ON -G Ninja ../llvm/

设置编译架构为X86,编译模式为clang,打开生成共享库。

执行ninja(在/llvm-project/build/目录下)

 ninja

经过漫长的等待,编译成功后在/llvm-project/build/bin目录下可以看到生成了clang文件,则此步骤成功完成,若失败请删除build文件夹并重新编译。

 

至此环境已经搭建完成,下一节会讲述一个小例子。

标签:学习笔记