七天LLVM零基础入门(Linux版本)------第一天

作者:snsn1984

开篇语:

学习LLVM的过程是一个漫长而艰巨的过程,需要大量的时间和精力。不仅仅如此,开始的过程也不轻松。一个好的开始就是成功的一半。我结合了自己学习的过程,以及给别人推荐学习的过程,整理出了这个七天LLVM零基础入门的系列博客。主要的目标是让没有LLVM基础的人,经过这一系列的学习,可以完成一些Pass的工作,并且可以成功的自己去自主学习,知道自己该怎么学习,知道自己该去学些什么。如果你有什么建议,欢迎反馈,欢迎探讨。

第一步,要对LLVM有一个初步的印象
这里,http://llvm.org/  是LLVM的官方网站,如果英语足够好,又有足够的耐心,从这里可以找到你想要的一切。

另外,可以参考我之前的博文: http://blog.csdn.net/snsn1984/article/details/8036032    它简明的告诉你,LLVM是什么。

第二步,看看LLVM到底是什么
我们对LLVM有了一个初步的印象之后,我们还是不知道LLVM具体是什么,那么我们就来看一下。

从    http://llvm.org/releases/download.html#3.2   这里,选择Download LLVM 3.2(3.2是目前发布版本的最新版本,在这个页面也可以看到以前的历史版本)下的

LLVM source code

Clang source code

Compiler RT source code

这三项进行下载,下载后进行解压,解压后应该得到三个名字分别为llvm-3.2.src、clang-3.2.src、compiler-rt-3.2.src。这时候,需要对这三个文件夹进行重命名,llvm-3.2.src重命名可以根据自己习惯,此处推荐重命名为llvm-3.2;clang-3.2.src重命名为clang,并且将此文件夹整体放到llvm-3.2/tools下,包含clang这个顶层文件夹;compiler-rt-3.2.src重命名为compiler-rt,并且将包含顶层文件夹的整体文件夹放到llvm-3.2/projects/下。

此时,打开一个终端,切换到llvm-3.2目录下,依次输入如下命令:

mkdir build

cd build

cmake ../

make

然后就可以在llvm-3.2/build/bin目录下看到一大堆的可执行文件。(此处不使用make install是方便在系统上使用多版本的llvm进行研究和修改。)

这个时候可以运行如下命令,来看看clang:

./clang -v

./clang -help

可以写一个简单的helloworld程序,使用clang进行编译,使用方法和gcc相同:

./clang hello.c

./a.out

第三步:clang是什么
我们刚才编译出来了自己的LLVM,但是我们使用的确是clang。clang到底是什么,我们接下来就来看看:
Clang is an "LLVM native" C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles (e.g. about3x faster than GCC when compiling Objective-C
code in a debug configuration), extremely usefulerror and warning messages and to provide a platform for building great source level tools. TheClang Static Analyzer
is a tool that automatically finds bugs in your code, and is a great example of the sort of tool that can be built using the Clang frontend as a library to parse C/C++ code.
这是官方对clang的简要介绍。
也可参加我之前的博文: http://blog.csdn.net/snsn1984/article/details/8232943   这里简要的介绍了clang的相关知识。

到这个时候,应该可以熟练的使用clang去编译自己的程序了。

-------------------------------------转载请注明出处。--------------------------------------------------

时间: 2024-08-07 00:42:46

七天LLVM零基础入门(Linux版本)------第一天的相关文章

七天LLVM零基础入门(Linux版本)------总结

七天LLVM零基础入门这系列文章,为了让刚接触LLVM的人在最短的时间内快速的熟悉LLVM.这系列文章,现在经过将近一年的时间的使用,有了不少反馈的意见,现在将这些情况总结一下. 1. 在按照这个七天的学习计划进行的学习过程中,不少人出现了延误现象,主要体现在读文档的时候,读的过于仔细,然后感觉时间不够用.虽然在文档上花了很长时间,但是到最后该用文档中的东西的时候,反而无从下手.出现这个问题,主要还是不会把握文档的重点,这个系列中列出来的文档,在日后接触LLVM的过程中,需要不断的去读,反复的去

七天LLVM零基础入门(Linux版本)------第七天

作者:snsn1984 这是这一次零基础入门的最后一天,这次的主要任务是实战一个Pass. 任务描述: 实现一个Pass,该Pass可以读取一个程序中所有的for循环的循环头的名字并输出. 同时,实现一个测试用例去测试输出的结果是否正确.该Pass的输入应该包含嵌套 循环. 在这个任务完成之后,应该已经达到可以达到可以分析和实现LLVM的Pass,查找和 分析LLVM的源码,查找需要使用的文档,并且可以知道下一步该如何自己学习LLVM. -----------------------------

七天LLVM零基础入门(Linux版本)------第三天

作者:snsn1984                第二天的任务中的LLVM IR的文档(http://llvm.org/docs/LangRef.html)对于初学者来说,看起来一定很费劲,内容繁杂,找不到头绪,看了后边的忘记了前面的,这些都是很正常的.但是,这里需要注意的是,不管多烦躁,一定要硬着头皮先把这个文档通读一遍,在读的同时,可以自己写一个小程序,根据前面学习的使用clang的命令将该程序转换成.ll格式的,然后在阅读文档的同时,对照.ll格式的文件,去实际的看一看,到底说的是什么

七天LLVM零基础入门(Linux版本)------第四天

作者:snsn1984 第一步:复习 第三天的时候,我们学习了LLVM的编程指引.在开始第四天的学习之前,需要复习之前学习过的两篇文档: LLVM IR的文档(http://llvm.org/docs/LangRef.html) 编程指引文档 (http://llvm.org/docs/ProgrammersManual.html) 这两篇文档是LLVM的重中之重,希望学习的时候认真一点,能掌握这些文档的核心. 第二步:阅读文档 Write an LLVM passhttp://llvm.org

七天LLVM零基础入门(Linux版本)------第二天

作者:snsn1984 在第一天的时候,我们简单了解了llvm和clang.今天我们继续对LLVM进行学习. 第一步:学会如何查找LLVM的文档 LLVM的文档很多,也很全面,是开源软件中文档比较全面并且比较细致的,这是很难得的一个事情.所以只要和LLVM打交道,就一定要学会并且善于去使用这些LLVM的文档. 因为LLVM文档比较多,初学者可能不太容易搞清楚,我之前写过一个关于LLVM的文档的博文,可以参考: http://blog.csdn.net/snsn1984/article/detai

七天LLVM零基础入门(Linux版本)------第五天

作者:snsn1984 第一步:复习文档 Write an LLVM pass http://llvm.org/docs/WritingAnLLVMPass.html 第二步:阅读LLVM编程规范http://llvm.org/docs/CodingStandards.html 编程规范是编程中需要注意的基础点,代码风格符合不符合规范,将会直接影响整个代码的可读性和代码质量. 所以一定要认真阅读,并且在自己编写代码的过程中要遵守规范.最容易犯错误的两点就是缩进和空格.不同 的编程规范的缩进是不同

移动交互小白零基础入门学习笔记之:手势篇

此贴为零基础入门学习贴,总结和积累些基础知识~ 1.基本手势 触屏设备中多样的手势操作,都是由这10种基本手势组合演变而来. 2.常用动作 基本动作是触屏界面中最常用的动作,如打开.选择等. 与对象有关的动作是对屏幕上某一目标对象的操作,如调整图片的位置大小,选择.删除或移动一个文件等. 导览动作是对屏幕视图的操作,如切换屏幕.滚动屏幕.缩放网页等. 画图示意动作是用画图的方式来示意某些操作,这些图形最好是常见易画的图形,符合用户心理预期,如画勾表示确认,画叉表示取消. 以上都是触屏设备中常用的

Bootstrap零基础入门教程(三)_javascript技巧

什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的.Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品. 写到这里,这篇从零开始学Bootstrap(3)我想写以下几个内容: 1. 基于我对Bootstrap的理解,做一个小小的总结.

Bootstrap零基础入门教程(二)_javascript技巧

什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的.Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品. 本文重点给大家介绍Bootstrap零基础入门教程(二),具体详情如下所示: 过程中会频繁查阅资料的网站: http://www.