| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 【LLVM奶妈式教学-1】LLVM从安装到手写第一个pass 【hello llvm】 -> 正文阅读 |
|
[开发工具]【LLVM奶妈式教学-1】LLVM从安装到手写第一个pass 【hello llvm】 |
? ? ? ? 需要学习LLVM的大家肯定知道这是一个强大的开源编译工具链,其实越往后学习越会发现,这个东西和设计的思想非常的牛逼,这个东西可以给编译流程带来可插拔式的优化,十分的方便,这篇文章不讲LLVM是什么,主要涉及实操,如何安装到完成第一个Pass优化。 下载LLVM源码的方法非常之多,这里我们只讲git方法。 LLVM源码下载
????????直接从git上克隆下来这个项目,可以发现克隆完成后在llvm-project下有非常多的文件夹,包含llvm等等,这个llvm就是我们需要用的核心工具,在llvm-project中(和llvm同级)创建文件夹build,然后进行源码编译。 LLVM编译这里需要注意的是:
第一个PASS编写? ? ? ? 这部分编写第一个PASS,也不介绍PASS是啥了,我们这边写一个简单的IR分析型PASS,输出一个函数名字,下一章节将详细介绍PASS的详细写法。 ? ? ? ? 其实你跟着官方文档(Writing an LLVM Pass — LLVM 15.0.0git documentation)是肯定可以的,这里就以简洁明了的中文搬一下。 Step1 : 创建一个文件夹存放你的PASS,官网文档说路径随意,但是我们跟着教程来,首先进入/llvm-project/llvm/lib/Transforms , 创建一个myhello文件夹来存放我们的pass。
在这个新的文件夹里,要有两个东西
2. myhello.cpp ? ? ? ?这个就是我们的PASS了,我们这边简单输出Hello 函数名字吧。(一个简单分析型PASS
x相信你一定看懂了,这是要Hello函数名字。 Step2: ?回到build目录重新make,make结束后会发现在build/lib中已经出现了LLVMmyhello.so这个文件(不要问我为什么文件命名这么挫,好区分嘛) Step3: 我们和llvm与build同级创建一个test文件夹,用来测试,里边我们随便写一个input.c
Step4: 然后我们用clang工具编译成bitcode,再使用opt工具加载我门自己的pass,就结束了!! 如果报红,或者全错误,请继续sudo 注意:新版本需要加上-enable-new-pm=0必须加,不加报错
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:54:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |