构建编译环境
拉取LLVM并配置这里我保存在D盘#创建文件夹 mkdir D:\LLVM cd D:\LLVM #拉取源码 (只拉取核心仓库不需要 submodule现在 LLVM 是 monorepo) #这一步比较大网络不好请挂梯子 git clone --depth1 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_PROJECTSclang ^ #只编译clang节省空间 -DLLVM_TARGETS_TO_BUILDX86 ^ #只编译x86后端这节省大部分编译时间除非要搞arm或者安卓 -DCMAKE_BUILD_TYPERelWithDebInfo ^ #Relase版本无法调试debug版本太大太慢了这里选择带调试符号的relase版本 -DLLVM_OPTIMIZED_TABLEGENON ^ -DLLVM_ENABLE_ASSERTIONSON ^ #开启代码断言。当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 IRclang -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_0BAOMPDDIFadd?$CI1?0?52?$CJ?5?$DN?5?$CFd?6?$AA, i32 noundef %call) ret i32 0 } ......LLVM IR 编译为可执行文件编译为可执行文件并正常运行
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2477496.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!