llvm实践日志(1)---安装llvm

2024-05-27 00:36
文章标签 安装 实践 日志 llvm

本文主要是介绍llvm实践日志(1)---安装llvm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考了官方教程:Getting Started with the LLVM System — LLVM 19.0.0git documentation

首先从github拷贝一份源码,使用了官方推荐的方法:

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

我的系统是ubuntu22,安装过程中需要使用到cmake、make、gcc、g++等工具,提前安装一下

sudo apt update
sudo apt upgrade
sudo apt install cmake ninja-build gcc g++

具体需要安装哪些工具,可以更具cmake时的提示,按需安装。

在llvm-project根目录下执行cmake构建ninja工程

cmake -S llvm -B build -G Ninja -DLLVM_PARALLEL_LINK_JOBS=1 \
-DCMAKE_BUILD_TYPE=Debug -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_USE_SPLIT_DWARF=ON \
-DLLVM_ENABLE_PROJECTS="clang;lld;mlir" -DLLVM_BUILD_EXAMPLES=ON

cmake用到的几个参数说明如下:

-S 源代码路径
-B 编译路径
-G 目标工程类型,可选的有ninja、makefile、VS、XCode等,在Linux下面ninja比makefile快
-DLLVM_PARALLEL_LINK_JOBS 设置链接时使用的进程数,该参数只对ninja有效,链接时内存需求大,在内存有限的情况下可限制同时进行链接的进程数量,避免内存不足
-DCMAKE_BUILD_TYPE 设置Dbug/Release,对于编译器开发,选择Debug,方便调试编译器
-DLLVM_OPTIMIZED_TABLEGEN=ON 使用TableGen优化器,提升编译效率
-DLLVM_USE_SPLIT_DWARF=ON 以DWARF文件格式存储调试信息,可大大提高编译效率
-DLLVM_ENABLE_PROJECTS 设置llvm附带的子工程,比如clang、lld、mlir等,也就是说,默认只会编译llvm核心,如果要用到其他组件,需要在这边设置
-DLLVM_BUILD_EXAMPLES=ON 编译示例,方便学习

使用ninja编译

ninja -C build

安装

ninja -C build install

总结一下,下载编译步骤比较常规明了,需要注意的是内存大小和硬盘空间。

如果要编译带调试信息的clang,推荐内存是32GB,内存不足可以使用swap空间不足。

 硬盘空间需求量也很大,以编译Debug版本llvm、clang、lld、mlir为例,build目录大小大约200GB,磁盘空间使用量还是很大的,编译之前需要准备足够的磁盘空间。

这篇关于llvm实践日志(1)---安装llvm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1006030

相关文章

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

Python中4大日志记录库比较的终极PK

《Python中4大日志记录库比较的终极PK》日志记录框架是一种工具,可帮助您标准化应用程序中的日志记录过程,:本文主要介绍Python中4大日志记录库比较的相关资料,文中通过代码介绍的非常详细,... 目录一、logging库1、优点2、缺点二、LogAid库三、Loguru库四、Structlogphp

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

JAVA Log 日志级别和使用配置示例

《JAVALog日志级别和使用配置示例》本文介绍了Java中主流的日志框架,包括Logback和Log4j2,并详细解释了日志级别及其使用场景,同时,还提供了配置示例和使用技巧,如正确的日志记录方... 目录一、主流日志框架1. Logback (推荐)2. Log4j23. SLF4J + Logback

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

GO语言zap日志库理解和使用方法示例

《GO语言zap日志库理解和使用方法示例》Zap是一个高性能、结构化日志库,专为Go语言设计,它由Uber开源,并且在Go社区中非常受欢迎,:本文主要介绍GO语言zap日志库理解和使用方法的相关资... 目录1. zap日志库介绍2.安装zap库3.配置日志记录器3.1 Logger3.2 Sugared

MySQL存储过程实践(in、out、inout)

《MySQL存储过程实践(in、out、inout)》文章介绍了数据库中的存储过程,包括其定义、优缺点、性能调校与撰写,以及创建和调用方法,还详细说明了存储过程的参数类型,包括IN、OUT和INOUT... 目录简述存储过程存储过程的优缺点优点缺点存储过程的创建和调用mysql 存储过程中的关键语法案例存储

tomcat日志中文乱码问题及解决方案

《tomcat日志中文乱码问题及解决方案》文章主要介绍了在使用Tomcat时遇到的乱码问题及其解决方法,页面输出乱码可能由于server.xml配置、HTML标签、编程输出编码不一致引起,解决方法包括... 目录一、页面输出乱码1.server.XML配置未注明编码格式2.catalina.bawww.cp

Mysql利用binlog日志恢复数据实战案例

《Mysql利用binlog日志恢复数据实战案例》在MySQL中使用二进制日志(binlog)恢复数据是一种常见的用于故障恢复或数据找回的方法,:本文主要介绍Mysql利用binlog日志恢复数据... 目录mysql binlog核心配置解析查看binlog日志核心配置项binlog核心配置说明查看当前所