【LLVM】Llvm 源码编译安装

2023-10-27

目录

概述

搭建CMake环境

搭建SVN环境

搭建Llvm环境

一、下载Llvm源码

二、下载Clang项目

三、下载 Compiler-RT

四、下载测试部分代码(可选 并且比较大)

五、离线下载相关包(可选)

六、创建build文件夹编译llvm源码

七、编译源码

八、查看是否安装成功

总结


概述

 

搭建Llvm源码编译环境,可以帮助我们后续学习Llvm源码和通过llvm库编译出的可执行文件来使用Llvm库。下面来带大家了解下Llvm源码环境的搭建方式。

 

搭建CMake环境

 

cmake的官网,https://cmake.org/download/

下载的CMake版本必须大于 Version 3.4.3。(注如果系统中已经有CMake了通过 cmake -version 查看一下版本号 大于就不用下载了)

安装步骤执行如下操作:

  1. 解压 tar xzvf cmake-3.8.0-rc1.tar.gz;进入到解压目录 依次执行 ./bootstrap
  2. make 
  3. make install

 

搭建SVN环境

 

如果系统中存在SVN,则忽略此步骤。

安装步骤执行如下操作:

  1. sudo apt-get install subversion

 

搭建Llvm环境

 

为了演示,我把llvm安装在临时目录下(/tmp)

 

一、下载Llvm源码

安装步骤执行如下操作:

1. cd /tmp/llvm_install_demo

  

2. svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm

此步骤时间较慢

 

二、下载Clang项目

  1. cd /tmp/llvm_install_demo
  2. cd llvm/tools 
  3. svn co http://llvm.org/svn/llvm-project/cfe/trunk clang

 

三、下载 Compiler-RT

  1. cd /tmp/llvm_install_demo 
  2. cd llvm/projects 
  3. svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt

 

四、下载测试部分代码(可选 并且比较大)

  1. cd /tmp/llvm_install_demo 
  2. cd llvm/projects 
  3. svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite

 

五、离线下载相关包(可选)

如果不是下载llvm主线的代码,并且是commiter的情况下,可以下载离线包,因为上述下载操作很慢,并且我们想使用的是已经修改了BUG,并且发布的版本。

下载地址如下:

https://releases.llvm.org

根据上述网址,可以下载想用的LLVM版本,LLVM3.3之前的版本与LLVM3.3之后的版本差异较大,根据自己的情况下载对应的版本。

 

六、创建build文件夹编译llvm源码

  1. cd /tmp/llvm_install_demo 
  2. mkdir build 
  3. cd build
  4. cmake -DCMAKE_INSTALL_PREFIX=/tmp/llvm_install_demo/pkg -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Debug ../

[1] DCMAKE_INSTALL_PREFIX 安装目录

[2] DLLVM_ENABLE_ASSERTIONS 是否编译Assert版本, 如果是Assert版本,在llvm库中assert断言会生效。

[3] DCMAKE_BUILD_TYPE 编译源码的类型,Release版本,Debug版本

 

七、编译源码

1. make -j4

 

2. make install

 

八、查看是否安装成功

1.  查看是否安装成功

<1> cd /tmp/llvm_install_demo/pkg

 

2.  进入到bin目录下

<1> cd /tmp/llvm_install_demo/pkg/bin

 

可以看到相应的可执行文件都产生了

 

3.  查看clang的版本

<1> cd /tmp/llvm_install_demo/pkg/bin

<2> ./clang --version

经过上述步骤LLVM源码环境算是搭建完毕了。下面我们可以使用llvm。

 

总结

 

工欲善其事必先利其器,通过上述步骤我们已经搭建出了一个Llvm源码环境,下面开启我们学习Llvm之路吧。

 

分享大数据行业的一些前沿技术和手撕一些开源库的源代码
微信公众号名称:技术茶馆
微信公众号ID    :    Night_ZW
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【LLVM】Llvm 源码编译安装 的相关文章

  • LLVM IR 指令和源代码行之间的映射

    如果使用 llvm gcc 或 Dragonegg 我如何存储 LLVM IR 指令和源代码行之间的映射 内部 LLVM IR 调试信息应用于此目的 看http llvm org docs SourceLevelDebugging html
  • 使用 llvm-prof 收集 LLVM 边缘分析

    我正在使用这些命令来编译下面的代码以收集 trunk llvm 中的边缘 块分析 clang emit llvm c sort c o sort bc opt insert edge profiling sort bc o sort pro
  • 如何强制 Xcode 使用自定义编译器?

    我想强制 Xcode 使用自定义编译器 从 src 构建的 clang llvm 以便我可以使用 clang 插件 我的Xcode版本是7 3 1 人们说使用自定义工具链是可能的 我没有对它们进行研究 因为更简单的解决方案对我来说效果很好
  • 可以从 LLVM-IR 自动生成 llvm c++ api 代码吗?

    clang 3 0 在线演示页面http llvm org demo index cgi http llvm org demo index cgi提供输出 LLVM C API 代码的选项 表示输入程序的 LLVM IR 生成 LLVM C
  • LLVM 和编译器术语

    我正在研究 LLVM 系统并且我已经阅读了入门文档 http llvm org docs GettingStarted html 然而 一些术语 以及 clang 示例中的措辞 仍然有点令人困惑 以下术语和命令都是编译过程的一部分 我想知道
  • 如何为 LLVM IR 生成元数据?

    我正在尝试为我生成的 LLVM IR 生成元数据 我想生成以下形式的元数据 nvvm annotations 0 0 metadata void foo metadata kernel i32 1 其中 foo 是我的 LLVM IR 中的
  • 链接不支持异常处理的代码 (C++/LLVM)

    我正在尝试使用 llvm 作为我的软件的代码生成后端 并且刚刚意识到 llvm 的编译不支持 C 异常处理 为了提高效率 然而 在我的软件中 我广泛使用异常处理 如果我将所有回调函数包装在 try catch blocks 中 这样就不需要
  • LLVM环境变量在哪里或者LLVM环境是如何配置的?

    作为上下文 我有一台 Mac 我在工作中使用它使用各种自定义构建脚本进行开发 我现在尝试使用同一台机器来玩一些个人 Xcode 项目 第一步 我在 Xcode 11 3 1 中创建一个新的 Single View App 项目 并尝试在我连
  • 如何使用 ARC 处理“require(..., bail)”语句?

    我正在查看一些示例代码Apple 示例代码中的 Square Cam http developer apple com library ios samplecode SquareCam Introduction Intro html 我想使
  • LLVM 执行哪些优化?

    我想具体了解一下LLVM的各个优化级别分别对应什么 也就是说 我想知道当我使用 llvm 或 clang 或 opt 的 0x 选项时 哪些优化过程是准确执行的 在前端之外 以及按什么顺序执行 相应工具的 man 没有提供关于此事的太多信息
  • 统一不同 clang-format 版本的输出

    我们尝试使用 clang format 工具稍微美化我们的代码 为了在我们所做的所有机器上获得统一的结果clang format style llvm dump config 已进行了一些调整并存储到 repo 中 问题是 clang 10
  • 有谁能够在 iOS 上使用 Address-Sanitizer(称为 asan 或 -fsanitize=address)吗?

    地址消毒剂https code google com p address sanitizer wiki AddressSanitizer https code google com p address sanitizer wiki Addr
  • __attribute__ ((已弃用)) 不适用于 Objective-C 协议方法?

    我需要弃用 Objective C 协议中的单个方法 在普通的类 实例方法上我添加 attribute deprecated 声明后 看来它不适用于协议方法 如果我将它们标记为已弃用并在某个地方使用它们 则项目编译正常 不会出现预期的弃用警
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • LLVM 互操作性(如 JVM 或 .Net)- 可以吗?

    我最近尝试了一些不同的 LLVM 前端 例如 Clang C Familiy LDC2 D Terra 所有这些语言都可以编译成 LLVM IR 有点可读 和 LLVM IR Bitcode 那么现阶段他们都处于同一 水平 对吗 我的问题是
  • 如何在 LLVM 中实现字符串数据类型?

    我一直在看LLVM http llvm org 最近 我发现它是一个非常有趣的架构 然而 浏览教程和参考材料 我看不到任何关于如何实现的示例string http en wikipedia org wiki String computer
  • 如何检查 Xcode 使用的 LLVM 编译器版本?

    我在 OS X 10 8 2 上使用 Xcode 4 5 2 我如何知道 Xcode 使用的是哪个版本的 LLVM 编译器 从命令行 07 40 35 andrew iMac SalesIQ siq 303 llvm gcc v Using
  • LLVM cmake安装找不到DIA SDK

    我正在尝试使用 cmake 构建 LLVM 安装 但它给了我一个关于 LLVM ENABLE DIA SDK 的错误 我之前在没有 PDB 的情况下成功构建了 LLVM 但我正在尝试开始使用 libclang 所以我需要 PDB Cmake
  • 由于没有匹配的函数,LLVM 构建错误

    我克隆了 LLVM git 存储库并遵循https llvm org docs GettingStarted html https llvm org docs GettingStarted html 配置后 cmake SOURCEDIR
  • 一个单元在哪一级测试无锁代码?

    Can LLVM https packages debian org stretch llvm QEMU https packages debian org stretch qemu kvm GDB https packages debia

随机推荐

  • Linux 可视化管理(webmin 和 bt(宝塔)运维工具的详细安装教程:webmin 安装配置和使用,bt 宝塔 的安装配置和使用)

    目录 第十八章 webmin 和 bt 宝塔 运维工具 18 1 webmin 安装配置和使用 18 1 1 基本介绍 18 1 2 安装 webmin 配置 18 1 3 简单使用演示 18 2 bt 宝塔 的安装配置和使用 18 2 1
  • 静电电容的计算与选型,帮助硬件解决产品最难的EMC问题!

    ESD的基本概念就不说了 直接来点实用的干货 在ESD测试中 我们经常会遇到一些比较明显的测试现象 比如设备重启 卡死或者屏幕闪屏的问题 究其根本 这些现象都是ESD造成的 而很多时候只需要加一个电容就能解决 本篇文章就静电电容的这个妙用进
  • char、int、short、float等数据类型

    char类型的最大值 127 char类型的最小值 128 signed char类型的最大值 127 signed char类型的最小值 128 unsigned char类型的最大值 255 short类型的最大值 32767 shor
  • ChatGPT 成全球学生的“作弊神器”?韩国学生“喜”提 0 分……

    整理 朱珂欣 出品 CSDN程序人生 ID coder life 仅仅横空出世 70 余天的 ChatGPT 已经累计用户超 1 亿 创下了互联网最快破亿应用记录 根据 Similarweb 的数据 截至今年 1 月 平均每天约有 1300
  • L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到一个处理错误

    L2TP连接尝试失败 昨天还能连接 就因为昨晚上把windows10更新了 今天就连接不了 报错如下 百度全都是千篇一律的文章 也无法解决我的问题 知道我发现是因为更新的问题 卸载更新后问题成功解决 操作步骤 点击开始 gt gt 设置 g
  • Qt QPixmap QImage 图片的等比例缩放到指定大小

    QPixmap pixmap path pixmap QPixmap fromImage imgShow pixmap pixmap scaled 152 76 Qt KeepAspectRatio Qt SmoothTransformat
  • 华为OD机试 - 内存资源分配Ⅱ(Java)

    题目描述 有一个简易内存池 内存按照大小粒度分类 每个粒度有若干个可用内存资源 用户会进行一系列内存申请 需要按需分配内存池中的资源返回申请结果成功失败列表 分配规则如下 分配的内存要大于等于内存的申请量 存在满足需求的内存就必须分配 优先
  • Retrofit请求数据对错误以及网络异常的处理

    异常处理 Retrofit本身会抛出HttpException Gson解析会抛出解析异常 此外我们还应该处理与服务器约定好的 异常 即上一篇提到的返回数据中result字段值不会0的情况 这里要先解决一个问题 就是Gson构建的对象 通过
  • Py区块链源码笔记 (1)挖矿

    昨晚听大佬小课堂 给我普及一晚上区块链相关各种知识 深深感觉到自己宛如一个智障 我不配说自己是学计算机的啊 膜拜之余 转载大佬的文章 像大佬学习 文章出处 Py区块链源码笔记 1 挖矿 也欢迎看到人的去访问他博客 Py区块链源码笔记 1 挖
  • 7-39 jmu-python-逆序输出 (5 分)

    7 39 jmu python 逆序输出 5 分 输入一行字符串 然后对其进行如下处理 输入格式 字符串中的元素以空格或者多个空格分隔 输出格式 逆序输出字符串中的所有元素 然后输出原列表 然后逆序输出原列表每个元素 中间以1个空格分隔 注
  • 【linux】——文件系统

    目录 什么是inode 目录 硬链接 软链接 什么是inode 当我们创建一个文件时 我们不对文件中写入任何内容 请问该文件是否占磁盘空间 答案是肯定的 因为文件中的属性信息也占了磁盘空间 首先我们得认清一个概念 文件构成 文件属性信息 文
  • 论文精读及分析:Deep Multi-Modal Object Detection and Semantic Segmentation for Autonomous Driving

    本文主要内容为论文 Deep Multi Modal Object Detection and Semantic Segmentation for Autonomous Driving Datasets Methods and challe
  • 【CV】第 6 章:图像分类的实际方面

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • nodejieba安装记(Windows)

    导语 最近想分析一下自己在学校论坛bt的下载行为 又想耍帅 所以准备整个词云 而词云的数据来源必然是下载种子的名称 类型等 所以不可避免要针对所有下载种子做关键词检索 因此需要用到中文分词工具 因为我利用nodejs 所以在网上查找了很多资
  • 阿里云轻量级应用服务器如何使用?

    阿里云轻量级应用服务器如何使用 一直听朋友说 可以在阿里云上付费购买一个自己的服务器 然后搭建部署自己的小应用 因为是云服务器 所以可以轻轻一个连接访问自己发布的应用 可以说是很棒棒了 那么如何使用已经申请好的阿里云服务器呢 主要步骤如下
  • 毕业设计--------登录鉴权

    前言 提示 这里只是记录一下自己做毕业设计的思路 前端采用vue 后端用springCloud 一 拦截器 Configuration public class InterceptorConfig extends WebMvcConfigu
  • android button setMinHeight setMinWidth 无效解决办法

    setMinWidth 0 setMinHeight 0 setMinimumWidth 0 必须同时设置这个setMinimumHeight 0 必须同时设置这个两个方法同时设置才能生效 转载于 https www cnblogs com
  • 人体骨骼关键点检测的初尝试

    关于人体骨骼关键点模型的介绍 请见上一篇博客 PaddleHub人体姿态检测模型pose resnet50 mpii 由于群友讨论到舞蹈视频 所以想了下 可以用这个搞事情 来个荧光棒舞怎么样 于是我打算拿寡姐来试试 使用关键点检测后 看来检
  • PAT乙级 1110 区块反转 (25 分) C++

    1110 区块反转 25 分 给定一个单链表 L 我们将每 K 个结点看成一个区块 链表最后若不足 K 个结点 也看成一个区块 请编写程序将 L 中所有区块的链接反转 例如 给定 L 为 1 2 3 4 5 6 7 8 K 为 3 则输出应
  • 【LLVM】Llvm 源码编译安装

    目录 概述 搭建CMake环境 搭建SVN环境 搭建Llvm环境 一 下载Llvm源码 二 下载Clang项目 三 下载 Compiler RT 四 下载测试部分代码 可选 并且比较大 五 离线下载相关包 可选 六 创建build文件夹编译