当前位置: 首页 > news >正文

构建编译环境

拉取LLVM并配置

这里我保存在D盘

#创建文件夹 mkdir D:\LLVM cd D:\LLVM #拉取源码 (只拉取核心仓库,不需要 submodule,现在 LLVM 是 monorepo) #这一步比较大,网络不好请挂梯子 git clone --depth=1 https://github.com/llvm/llvm-project.git #创建构建目录 cd llvm-project mkdir build cd build

构建并编译

这里需要打开刚刚下载好visual studio的工作台,我这里是x64 Native Tools Command Prompt for VS 2022
注意:开始编译需要预留30-60G硬盘空间,编译需要30分钟左右

#利用cmake构建项目 cmake -G "Ninja" ^ #使用ninja编译 -DLLVM_ENABLE_PROJECTS="clang" ^ #只编译clang节省空间 -DLLVM_TARGETS_TO_BUILD="X86" ^ #只编译x86后端,这节省大部分编译时间,除非要搞arm或者安卓 -DCMAKE_BUILD_TYPE="RelWithDebInfo" ^ #Relase版本无法调试,debug版本太大太慢了,这里选择带调试符号的relase版本 -DLLVM_OPTIMIZED_TABLEGEN=ON ^ -DLLVM_ENABLE_ASSERTIONS=ON ^ #开启代码断言。当pass写错时,会报错而不是直接崩溃 ../llvm #编译 ninja

添加环境变量

这一步方便之后的使用

#将刚刚编译好的环境加入环境变量 D:\LLVM\llvm-project\build\bin

简单验证环境

clang --version opt --version

一般来说,跟着上面步骤走 并且 系统和vs版本一样到这是不会报错的。

验证环境

下面编译一个test.c来验证环境是否正常。

#include <stdio.h> int add(int a, int b) { return a + b + 5; } int main(){ printf("add(1, 2) = %d\n", add(1, 2)); return 0; }

编译代码

C 编译为LLVM IR
clang -S -emit-llvm -O0 test.c -o test.ll

观察IR:

...... define dso_local i32 @main() #0 { entry: %retval = alloca i32, align 4 store i32 0, ptr %retval, align 4 %call = call i32 @add(i32 noundef 1, i32 noundef 2) %call1 = call i32 (ptr, ...) @printf(ptr noundef @"??_C@_0BA@OMPDDIF@add?$CI1?0?52?$CJ?5?$DN?5?$CFd?6?$AA@", i32 noundef %call) ret i32 0 } ......
LLVM IR 编译为可执行文件

编译为可执行文件并正常运行

http://www.jsqmd.com/news/579115/

相关文章:

  • 基于机器学习算法的亚马逊用户评论情感分析研究:深入探讨随机森林与决策树模型的应用及其实验评估
  • 为什么你的Protobuf解析比gRPC官方慢3.2倍?7个JVM参数+2个序列化策略的硬核调优清单
  • 零基础玩转OpenClaw:Qwen3.5-9B镜像10分钟体验报告
  • 怎么选购监控?
  • 代码分享】“基因集单通路的泛癌GSEA富集分析
  • AI 生码:RAG 落地量化实践与体系搭建
  • 【HFP】规范精讲[17]: HFP链路控制:LM/LC交互与设备类型适配逻辑
  • 如何基于OpenAI进行Function Calling调用
  • 小红书内容保存难题,这款Python工具如何实现一键无水印下载?
  • SEO_ 从零开始学习SEO的完整步骤与实战案例
  • 【急诊科影像秒级加载黑科技】:基于C++20协程与CUDA Unified Memory的实时渲染框架设计(附GitHub可运行代码)
  • OpenClaw配置文件详解:Qwen3.5-9B高级参数调优手册
  • 仅用200行代码重构内存管理模块:某AI平台将GPU服务器月成本压至$1,840的独家策略(限时开源)
  • OpenClaw压力测试:千问3.5-9B持续运行24小时稳定性
  • 飞机喷涂废气治理厂家丨一场看不见的“废气治理战”如何打响?
  • 从YAML配置文件入手,5分钟搞懂如何定制你的YOLOv5s/m/l/x模型
  • 其他重要思想:滑动窗口、双指针、位运算、随机化算法
  • LZ算法:数据压缩技术的革命与影响
  • OpenClaw环境隔离方案:Phi-3-vision-128k-instruct多模态任务专用沙箱配置
  • k8s静态pod资源清单存放位置
  • 如何实现 SEO 优化与广告投放的协同效果
  • 长尾关键词的SEO提交技巧有哪些
  • C++内存池线程局部存储(TLS)失效真相:当__thread变量遭遇CPU核心迁移,如何用__builtin_ia32_rdtscp实现亚微秒级绑定校验
  • 数字化转型难落地?一文读懂数字精益工厂的本质与实践
  • 2026年靠谱的瓶盖厂家哪家好 - 品牌宣传支持者
  • 基于SpringBoot + Vue的实验室共享预约系统(角色:学生、教师、管理员)
  • Claude Code 源码泄漏的元凶.map暴露
  • OpenClaw开发提效:Qwen3-4B辅助代码审查实战
  • 千问3.5-27B模型微调:定制OpenClaw专属指令集
  • ESP-IDF专用SHT4X温湿度传感器驱动组件