【LLVM】在Windows中配置LLVM开发环境

本文内容

  • 0.动机
  • 1. 安装Visual Studio 2019
  • 2 安装Python3
    • 已安装Python
    • 未安装Python
  • 3. 配置Visual Studio
  • 4.安装LLVM
    • 获取源码
    • 将LLVM切换到我们的目标版本
    • 编译LLVM

0.动机

想着ubuntu用着别手,看看能不能在Windows中进行开发。于是就动手实践了下 Getting Started with the LLVM System using Microsoft Visual Studio。安装是安装成功了,但用了一段时间后,我先说结论:
并不推荐大家在Win系统里进行开发!!!!!还是乖乖使用LINUX系

  1. 最重要的就是LLVM官方并不是十分支持Win环境,Bug多,很多新特性还是在UNIX系系统中才支持。
  2. 最明显的感受就是开发时不适应。比如,大部分教程教你使用opt试用pass时,调用的是动态库.so文件。但在win里动态库文件不叫这个,诸如此类的问题多得很。给小白实践带来很多小麻烦(大佬请忽视我说的话)。

LLVM

But,安装了就安装了吧,万一以后熟悉了还可以继续用。下面是安装步骤。

1. 安装Visual Studio 2019

首先,在 Visual Studio 安装程序的“工作负载”选项卡中,选择“ 使用 C++ 进行桌面开发”工作负载。
并更改安装位置到其他盘,不推荐直接安装在系统盘中。

勾选C++的桌面开发
我的位置配置方式,供大家参考:
目录结构

  • VisualStudio2019Pro
    • VisualStudio2019ProIDE
    • VisualStudio2019ProShared
      两个子文件夹分别承载IDE共享组件、工具SDK等
      文件夹架构
      点击位置中的‘更改’,配置为我们新建的文件夹
      位置配置方式
      点击’单个组件’选项卡,勾选“Git for Windows”,点击安装。已经有Git的可以不用勾选。
      安装git for window
      等待它安装完毕。
      等待安装
      会提醒你登录账户,但暂时不要登录,选以后再说
      继续但无需代码
      上菜单栏选项中,帮助-注册,点击使用产品密钥,输入神秘代码NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y,点击应用,即可完成。
      激活

2 安装Python3

已安装Python

可以使用以下命令来查看Python的安装路径

  1. 打开命令提示符面板: windows键+R,输入“cmd”,打开命令行。
  2. 输入以下代码查看安装路径
import sys
sys.path

python路径
这里显示我已经安装python3.9。

未安装Python

进入官网Python官网,选Download,安装最新的吧。
我以python-3.12.3为例,重新安装Python。
新Python
在安装选项中,勾选Add python.exe to PATH,这将允许为所有用户安装 psutil 进行回归测试,并使 Python 可从命令行使用。.上面那个也勾下,以免安装出问题。然后点击Customize installation
add

为所有用户安装
等待安装完毕
安装Python

3. 配置Visual Studio

找到Developer Command Prompt for VS 2019并以管理员身份运行
Developer Command Prompt for VS 2019
提前在你想安装LLVM的盘下创建空文件夹。但不要安装到包含空格的路径(例如c:\Documents and Settings\...),因为会失败。我这里以E:\llvm为例

输入命令

e:
cd /llvm

接着输入如下命令,注册 Microsoft 调试接口访问 (DIA) DLL。LLVM PDB 测试和LLDB 开发需要 DIA 库 。

regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\msdia140.dll"
regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\amd64\msdia140.dll"

键入每个命令一般都会弹出提示,点击确认即可。
成功

4.安装LLVM

获取源码

退出Developer Command Prompt for VS 2019并进入cmd命令行
键入以下命令安装psutil

pip install psutil

安装psutil
键入以下命令获取LLVM源码:

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

将LLVM切换到我们的目标版本

源码大小约为3GB。并且git方式下载的一般为最新的llvm版本。截止本文发出时,最新的版本已经到了LLVM 19。新版本有新特性,但并不代表一定好,而且新版本可能文档方面的资料少,这并不利于我们的开发工作。但我们可以使用git将其切换至指定版本。
进入lllvm-project目录,鼠标右键Open git bash here
键入

git tag

查看版本标签。例如我想切换的LLVM13的标签为llvmorg-13.0.1
gittag
键入命令,然后等待切换完毕

git checkout llvmorg-13.0.1

gitcheckout

编译LLVM

编译LLVM需要使用到Cmake,而VS自带了cmake不需要我们安装。所以,我们要做的就是使用VS打开刚才切换完毕的llvm-project源码目录中的llvm子目录。
llvmdir

键入命令

cmake  -B build -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=X86 -Thost=x64
  • -B build: 这个选项告诉CMake在指定的目录中生成构建系统文件。在这里,build是构建目录的路径。如果该目录不存在,CMake会创建它。
  • -DLLVM_ENABLE_PROJECTS=clang: 这个选项,告诉CMake要构建LLVM项目的哪些部分。在这里,只构建了Clang,即C/C++编译器。
  • -LLVM_TARGETS_TO_BUILD=X86:告诉CMake要为哪些目标体系结构构建LLVM。在这里,只构建了X86体系结构的支持。
  • -Thost=x64: 默认情况下,CMake 生成的 Visual Studio 项目文件使用 32 位工具集。如果在 64 位版本的 Windows 上进行开发并希望使用 64 位工具集,需要传递该标志。这要求 CMake 3.8.0 或更高版本。

键入命令后开始构建:
cmake
构建完生成了一些配置信息以及一个build目录。在该目录下找到LLVM.sln并双击~~(666)~~ 。
然后在解决方案中找到ALL_BUILD,进行构建.(其实就是安装LLVM)。
ALL_BUILD
构建过程大概需要1-2小时。然后…准备好听电脑风扇狂转。
ass
大家可以自己写个Pass,做一下…就会发现很烦…
结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/575375.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio实现内容丰富的安卓养老平台

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 158安卓养老 1.开发环境 后端用springboot框架,安卓的用android studio开发android stuido3.6 jak1.8 idea mysql tomcat 2.功能介绍 安卓端: 1.注册登…

Mockaroo - 在线生成测试用例利器

简介:Mockaroo 是一个无需安装的在线工具,用于生成大量的自定义测试数据。它支持多种数据格式,如JSON、CSV、SQL和Excel,并能模拟复杂的数据结构。 历史攻略: 测试用例:多条件下编写,懒人妙用…

How to solve matplotlib Chinese garbled characters in Ubuntu 22.04

conda create -n huizhou python3.8conda activate huizhouconda install numpy matplotlibpip install mplfontsmplfonts init# 导入必要的库 import numpy as np import matplotlib.pyplot as plt# 创建角度数组,从0到2π x np.linspace(0, 2 * np.pi, 100)# 计算…

微信小程序-------模板与配置

能够使用 WXML 模板语法渲染页面结构能够使用 WXSS 样式美化页面结构能够使用 app.json 对小程序进行全局性配置能够使用 page.json 对小程序页面进行个性化配置能够知道如何发起网络数据请求 一.WXML 模板语法 数据绑定 1. 数据绑定的基本原则 ① 在 data 中定义数据 ② 在…

架构师系列-消息中间件(11)- RocketMQ 进阶(5)-深入分析(2)

3. 文件刷盘机制 RocketMQ 的消息是存储在磁盘上的,这样做有两个优点: 保证断电后恢复 让存储的消息量超出内存的限制 RocketMQ 存储与读写是基于 JDK NIO 的内存映射机制,具体使用 MappedByteBuffer(基于 MappedByteBuffer 操…

通配符HTTPS安全证书

众多类型的SSL证书,要说适用或者说省钱肯定是通配符了,因为谁都想一本SSL证书包括了整条域名,而且也不用一条一条单独管理。 通配符HTTPS安全证书,其实就是通配符SSL证书,SSL证书主流CA的参数都一样,通配符…

python中如何用matplotlib写雷达图

#代码 import numpy as np # import matplotlib as plt # from matplotlib import pyplot as plt import matplotlib.pyplot as pltplt.rcParams[font.sans-serif].insert(0, SimHei) plt.rcParams[axes.unicode_minus] Falselabels np.array([速度, 力量, 经验, 防守, 发球…

迅雷不限速破解方法

背景:现在迅雷和百度云的下载速度真的太恶心了,所以总有大佬可以采用厉害的方法进行破解,在网上看了一圈,很多都是骗人或者是无效的,找了一个靠谱的方法,亲测速度能达到10M以上,非常给力。 以下…

数据库工程师的工作职责(合集)

数据库工程师的工作职责1 职责: 1. 日常数据库的基本安装,维护,升级,监控的; 2. 配合研发部门进行数据库设计支持,协助开发、设计和进行SQL语言优化; 3. 配合相关部门数据库相关的任务,比如数据导入导出&am…

怎么使用下载视频号视频?详细视频下载使用教程

越来越多的人开始使用视频号等平台来分享和观看视频内容。然而,有时候我们可能会遇到需要将视频保存到本地设备以便离线观看或进一步编辑的情况。 本文将为您详细介绍如何使用视频下载plus,来下载视频号的视频内容。 一、了解视频号下载功能 首先&…

SublimeText - 汉化插件安装教程

第一步:快捷键CTRLShiftp,(如果是Mac,则是command Shiftp) 弹出查找栏—找到 install Package,并点击选择。 如下图: 第二步:再次弹出的框中,选择 ChineseLocalizations…

飞鹤与满趣健达成战略合作 加速深化国际化布局

继获得加拿大地区首张婴幼儿配方奶粉生产执照后,中国飞鹤的海外征途再添新动作。4月25日,中国飞鹤加拿大皇家妙克与美国婴童用品巨头满趣健(Munchkin)在北京正式达成战略合作。此次合作彰显了中国乳企的硬核实力,也是飞…

前后缀分离,CF1209 C. Maximal Intersection

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1029C - Codeforces 二、解题报告 1、思路分析 线段相交具有可…

亚马逊风控有哪些?如何在账号风控种避免封号?

如今商业竞争愈发激烈的时代,数据的准确性和可靠性已经成为商家和消费者共同追求的目标。为了达到这一目标,亚马逊采取了一系列风险管控措施,旨在杜绝恶意行为、虚假交易等违规情况,从而确保交易在平台上的安全与诚信。许多亚马逊…

汇隆晶片授权世强硬创,代理产品工作温度范围覆盖工业/车规/航天级

凭借独特的线上线下技术分销以及团队优异的推新能力,世强先进(深圳)科技股份有限公司(下称“世强先进”)获得浙江汇隆晶片技术有限公司(下称“汇隆晶片”,英文名:HLC)授权…

【JAVA】一文掌握Java并发编程

Java 开发中,并发编程属于相当重要的一个知识点,可以说,Java 的并发能力,是成就今日 Java 地位的因素之一。Java 的并发编程由浅入深实质上是包含 Java(API)层、JVM(虚拟机)层、内核…

网络攻击近在咫尺:数据加密与SSL成为信息安全之盾

随着互联网的日益普及和科技的迅猛发展,网络攻击已经成为信息安全领域面临的一大难题。近期,一场网络安全实验让我们对网络攻击有了更为深刻的认识。在实验中,网络安全工程师通过模拟攻击,展示了木马植入、文件浏览、键盘监听、病…

激活IDM下载器并配置百度网盘

前言: 最近想下载一些软件,奈何不充钱的百度网盘的速度实在太慢了,不到一个G的文件夹奈何下了一晚上,只能重新找一下idm的下载了。 但是idm的正版是需要收费的,所以有白嫖党的破解版就横空出世了。 正文&#xff1a…

JavaEE——Spring Boot + jwt

目录 什么是Spring Boot jwt? 如何实现Spring Boot jwt: 1. 添加依赖 2、创建JWT工具类 3. 定义认证逻辑 4. 添加过滤器 5、 http请求测试 什么是Spring Boot jwt? Spring Boot和JWT(JSON Web Token)是一对常…

HarmonyOS hsp制作与引用

1. HarmonyOS hsp制作与引用 1.1 介绍 HSP动态共享包(模块),应用内HSP指的是专门为某一应用开发的HSP,只能被该应用内部其他HAP/HSP使用,用于应用内部代码、资源的共享。应用内HSP跟随其宿主应用的APP包一起发布,与该…