首页
社区
课程
招聘
[原创]在Windows平台使用VS2022的MSVC编译LLVM16,让LLVM再再次优雅起来
发表于: 2023-12-1 13:45 11611

[原创]在Windows平台使用VS2022的MSVC编译LLVM16,让LLVM再再次优雅起来

2023-12-1 13:45
11611

联动一下隔壁帖子,本文章仅作为一个补充:
如何优雅的在 Windows 上使用 LLVM Pass 插件进行代码混淆
[原创]让LLVM16在windows上再次优雅起来

本文的编译方法不需要对LLVM源码进行任何改动,除了VS2022以外不需要安装任何额外的软件或者依赖

首先,保证你的Windows上安装了VS2022

图片描述

其次,保证你的VS2022安装了MSVC,一般勾选了使用C++的桌面开发就应该满足条件了

图片描述

别忘了把这两个给勾上,虽然编译LLVM的时候用不上它们,但是编译完了我们可以把编译后的与自带的进行替换,然后就能使用MSBuild工具链调用我们自己的LLVM进行编译了(具体方法参考隔壁,这里不赘述了)

图片描述

然后是重点,一定要从设置里把当前系统区域设置给改为英语(美国)并重启系统

图片描述

准备好编译环境后,从GitHub上把LLVM的源码clone下来,选择LLVM16的branch,最后一个版本应该为16.0.6(VS2022自带的是16.0.5,不过基本没啥影响)

git clone https://github.com/llvm/llvm-project.git -b release/16.x

图片描述

我们直接对着llvm-project右键=>使用 Visual Studio 打开

这时VS2022可能会弹窗,我们选择不启用

图片描述

点击视图=>终端,打开VS2022的开发者命令行(一定要用这个,不能用别的)

图片描述

使用VS2022自带的cmake进行构建,等待项目构建完毕

cmake -S llvm -B build -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=X86

这里指定的DLLVM_TARGETS_TO_BUILD=X86表示我们编译出来的LLVM只能编译为X86指令集(32位和64位),如果想支持更多的指令集可以去掉这个参数,但是会增大项目体积、增加编译时间

图片描述


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 8
支持
分享
最新回复 (4)
雪    币: 9000
活跃值: (6215)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
坐等ollvm ,这种集成我这种小乐色没作用。
2023-12-1 18:15
0
雪    币: 3004
活跃值: (30861)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2023-12-3 22:59
1
雪    币: 1189
活跃值: (1889)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
所以优雅在哪里。。。。。。
2023-12-5 10:28
0
雪    币: 2147
活跃值: (5228)
能力值: ( LV7,RANK:150 )
在线值:
发帖
回帖
粉丝
5
蹲一个再再再次
2023-12-5 16:23
0
游客
登录 | 注册 方可回帖
返回
//