怎么创建llvm的编译环境

2023-11-19

1.安装环境

首先,本人在下面操作使用的是ubuntu16的版本 具体如下图所示
在这里插入图片描述

2.安装环境参考网址

https://source.android.com/setup/build/initializing
在这里插入图片描述

3.下载llvm代码

官网下载9.0.1的版本 我这里使用的也是9.0.1的版本
https://github.com/llvm/llvm-project/releases?page=5

4.将下载的llvm包加入ubuntu中 并参考https://llvm.org/docs/GettingStarted.html 网址进行环境

在这里插入图片描述
并参考如上图环境进行配置
如果出现 CMake Error: CMake was unable to find a build program corresponding to “Ninja”. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
在这里插入图片描述
请安装ninja zlib1g

安装步骤如下:
sudo apt-get install zlib1g

安装依赖

sudo apt-get install re2c

wget https://github.com/ninja-build/ninja/archive/refs/tags/v1.10.2.tar.gz -o ninja-v1.10.2.tar.gz
tar ninja-v1.10.2.tar.gz
cd ninja-1.10.2

./configure.py --bootstrap
sudo cp ninja /usr/bin/ninja
sudo cp /usr/bin/ninja /usr/local/bin/
sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force

查看版本

ninja --version

参考https://blog.csdn.net/u012587637/article/details/116699968

5.在ubuntu 中加载clang的生成环境

mkdir build_debug
cd build_debug
cmake -G Ninja …/llvm
现在ls 看一下build_debug中的内容 红色的两个不用管 是我安装ninja 下载的两个包
在这里插入图片描述

6.编译 ninja -j8

这里使用的是8核同时编译 大家可以根据自己的电脑选择
编译需要的时间会比较久 中间可能会停止多次 每次重新使用命令ninja -j8 重新执行就好 在这里插入图片描述

7.第6步是编译debug版本的 现在编译release版本的

cd …/build_release 然后
cmake -G Ninja -DCMAKE_BUILD_TYPE=release -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_PROJECTS=“clang” …/llvm

8 编译后的结果

使用 ls -al clang 可以看到clang-9
然后使用./clang --version 可以看到我当前编译的clang的版本
在这里插入图片描述

9 将clang 添加到环境变量中

export PATH=/home/tom/llvm-project-9.0.1.tar/llvm-project-9.0.1/build_release/bin:$PATH
这个是本人自己的路径 /home/tom/llvm-project-9.0.1.tar/llvm-project-9.0.1/build_release/bin
上面是为当前终端添加临时路径 下面是添加永久路径的方法
su

vim /ect/profile
在文件末尾添加
export PATH=/home/tom/llvm-project-9.0.1.tar/llvm-project-9.0.1/build_release/bin:$PATH
source /etc/profile

10.出现错误处理方法

1.ninja: build stopped: subcommand failed.
出现这个错误,只需要重复编译命令ninja -j4 就好了

在这里插入图片描述
2.ninja: error: loading ‘build.ninja’: No such file or directory
出现这个错误,则需要重新执行cmake -G Ninja …/llvm 执行第五,六步的步骤,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

怎么创建llvm的编译环境 的相关文章

  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 这个可变参数模板示例有什么问题?

    基类是 include
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • (ps2019)Photoshop 2019 最新破解版下载

    Photoshop CC 2019新增功能 下载地址点我 新功能介绍 https helpx adobe com cn photoshop using whats new html 经过改良设计的内容识别填充 借助 Adobe Sensei
  • 设计简单算数表达式语法分析器算法(LR来实现)

    include
  • 高通平台中gpio简单操作和调试

    做底层驱动免不了gpio打交道 所以对其操作和调试进行了一下简单的梳理 一 gpio的调试方法 在Linux下 通过sysfs 获取gpio状态 也可以操作gpio 1 获取gpio状态 cd sys kernel debug cat gp
  • R语言聚类分析

    本文首发于公众号 医学和生信笔记 完美观看体验请至公众号查看本文 文章目录 系统聚类 层次聚类 Hierarchical clustering 快速聚类 划分聚类 partitioning clustering K means聚类 围绕中心
  • kettle开发-Day40-AI分流之case/switch

    前言 前面我们讲到了很多关于数据流的AI方面的介绍 包括自定义组件和算力提升这块的 今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch Case 当我们的数据来源于类似日志 csv文件等半结构化数据时 我们需要在数据流
  • Node.js安装与配置(详细步骤)

    前言 本篇博文记录了Node js安装与环境变量配置的详细步骤 旨在为将来再次配置Node js时提供指导方法 另外 Node js版本请根据自身系统选择 安装位置 全局模块存放位置和环境变量应根据自身实际情况进行更改 Node js安装与
  • Wordle是优秀的信息可视化吗?如何真正使用Wordle?

    数据可视化之美 Beautiful Visualization Wordle是优秀的信息可视化吗 如果你认为Wordle 是严格意义上的信息可视化工具 它在设计的某些方面存在误导或者干扰用户的潜在可能 有必要指出并加以批判 以下是我认为Wo
  • 迷宫问题-DFS-BFS

    迷宫问题 迷宫问题简介 BFS解决迷宫最短路径问题 DFS记录迷宫路径 DFS解决迷宫所有路径问题 迷宫问题简介 学习过算法程序设计的应该都学习过迷宫这个问题 迷宫问题主要设计的算法就是DFS 深度优先遍历和BFS 广度优先遍历 在一个二维
  • python读取含有多个sheet的xlsx文件,并将解析各个sheet页的数据进行融合

    import pandas as pd from xlrd import open workbook if name main table open workbook 文件名称 xlsx 打开文件 data pd read excel 文件
  • 复制对象时勿忘其每一个成分——条款12

    设计良好之面向对象系统 OO systems 会将对象的内部封装起来 只留两个函数负责对象拷贝 复制 那便是带着适切名称的copy构造函数和copy assignment操作符 我称它们为copying函数 条款5观察到编译器会在必要的时候
  • 杭州端点网络java开发实习生笔试题自我反省

    1 Spring Bean的默认范围是 A Prototype B Singleton C Abstract D Session 2 下列关于一个类的的静态成员的描述中 不正确的是 A 静态成员变量可被该类的所有方法访问 B 该类的静态方法
  • 二叉树的实现及其遍历(Python)

    树是一种基本的 非线性 数据结构 数据结构树分为 根 枝和叶三个部分 节点Node 是组成树的基本部分 每个节点具有名称或 键值 边Edge 边是组成树的另一个基本部分 根Root 树中唯一一个没有入边的节点 路径Path 由边依次连接在一
  • 2023年电赛E题详细讲解

    前言 E题是运动目标控制与自动追踪系统 其实就是一个红色激光追踪绿色激光 本文主要授人以渔 讲解思路 不含代码 建议自己编写 本文旨在和大家探讨一下更好的方案 欢迎讨论 读题 做题肯定是要读题的 本节主要是将一些主要的点 并反推出题人的出题
  • PLC控制电动机的顺序启动逆序停止

    一 PLC控制电动机延迟启动正转和反转 实验要求 当按下电动机的正转启动按钮时 电动机需要延迟30秒后 电动机才会正转启动工作 当按下反转按钮时 电动机需要延迟20秒后 电动机才会反转启动工作 当按下停止按钮时电动机立刻停止工作 PLC I
  • 浅谈系列之DevSecOps(一)目标及优点

    一 DevOps目标 说到DevSecOps就不得不提DevOps 后者的目标是提升整个研发效能 进行更便捷 更快捷 更可靠的交付 从而提高产品竞争优势 DevOps模糊了以往研发模式中开发 测速 运维等岗位和角色的界限 加强了他们之间的协
  • 如何通过Charles+BurpSuite的配合在PC端抓到手机包

    渗透测试工作记录 文章目录 渗透测试工作记录 前言 一 Charles是什么 二 实现步骤 以Mac端抓包IOS微信小程序为例 1 在Charles下设置代理的端口 2 分别在PC端和手机端安装证书 3 关闭macOS代理 打开外部代理 4
  • ESP32-CAM配置开发环境并烧录程序运行

    环境准备 ESP32 CAM开发板 烧录器 摄像头和一根USB线束连接电脑即可 Arduino下载完成后打开 不同版本的菜单栏可能稍微不同 仔细找即可 选择下面的选项 联网自动下载ESP32 CAM的 环境 端口和当前的一致即可 正常连接应
  • QT项目实战之翻金币小游戏

    目录 一 实现效果 二 实现过程 1 创建项目 添加项目资源 2 创建主场景 mainscene cpp h 3 自定义开始按钮 mypushbutton cpp h 4 创建选择关卡场景 chooselevelscene cpp h 5
  • js-年月日时分秒字符串切割,只显示年月日

    substring 方法用于提取字符串中介于两个指定下标之间的字符 var date 2020 01 01 00 00 00 date substring 0 10 console log date 2020 01 01
  • 怎么创建llvm的编译环境

    1 安装环境 首先 本人在下面操作使用的是ubuntu16的版本 具体如下图所示 2 安装环境参考网址 https source android com setup build initializing 3 下载llvm代码 官网下载9 0