文档章节

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

snsn1984
 snsn1984
发布于 2013/02/20 10:38
字数 738
阅读 7152
收藏 27

作者:snsn1984

因为项目需要,我需要给两个从没接触过LLVM的组员推荐一些学习LLVM的文档,并且给予一定的指引。所以我以零基础人群为对象,写了一个入门指南。


第一步,要对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. about 3x faster than GCC when compiling Objective-C code in a debug configuration), extremely useful error and warning messages and to provide a platform for building great source level tools. The Clang 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去编译自己的程序了。

转载请注明出处。

© 著作权归作者所有

snsn1984
粉丝 94
博文 32
码字总数 45245
作品 0
长春
项目经理
私信 提问
七天LLVM零基础入门(Linux版本)------总结

七天LLVM零基础入门这系列文章,为了让刚接触LLVM的人在最短的时间内快速的熟悉LLVM。这系列文章,现在经过将近一年的时间的使用,有了不少反馈的意见,现在将这些情况总结一下。 1. 在按照这...

snsn1984
2014/02/10
404
0
七天LLVM零基础入门(Linux版本)------第二天

作者:snsn1984 在第一天的时候,我们简单了解了llvm和clang。今天我们继续对LLVM进行学习。 第一步:学会如何查找LLVM的文档

snsn1984
2013/02/22
2.2K
5
七天LLVM零基础入门(Linux版本)------第七天

作者:snsn1984 这是这一次零基础入门的最后一天,这次的主要任务是实战一个Pass。 任务描述: 实现一个Pass,该Pass可以读取一个程序中所有的for循环的循环头的名字并输出。...

snsn1984
2013/02/28
1K
6
七天LLVM零基础入门(Linux版本)------第三天

作者:snsn1984 第二天的任务中的LLVM IR的文档( http://llvm.org/docs/LangRef.html) 对于初学者来说,看起来一定很费劲,内容繁杂,找不到头绪,看了后边的忘记了前面的,这些都是很正常...

snsn1984
2013/02/22
1K
0
七天LLVM零基础入门(Linux版本)------第六天

作者:snsn1984 第一步:对优化代码的pass继续进行深入的分析 首先检查一下第五天中的Pass练习,什么情况下可以进行优化,什么情况下不可以进行优化。 可以参照系统自带的Pass: http://llvm...

snsn1984
2013/02/28
812
0

没有更多内容

加载失败,请刷新页面

加载更多

分页查询

一、配置 /*** @author beth* @data 2019-10-14 20:01*/@Configurationpublic class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor(){ ......

一个yuanbeth
昨天
5
0
在LINQPad中使用Ignite.NET

LINQPad是进行.NET开发的一款优秀工具,非常有利于Ignite.NET API的快速入门。 入门 下载LINQPad:linqpad.net/Download.aspx,注意要选择64位操作系统的AnyCPU版本; 安装Ignite.NET的NuGet...

李玉珏
昨天
6
0
JS其他类型值转化为Boolean类型规则

本文转载于:专业的前端网站➤JS其他类型值转化为Boolean类型规则 由于最近在笔试的时候,发现好多关于其他类型转化为Boolean类型的题目,因此总结一下! 一、String类型转化为Boolean 1.转化...

前端老手
昨天
6
0
EurekaClient自动装配及启动流程解析

在上篇文章中,我们简单介绍了EurekaServer自动装配及启动流程解析,本篇文章则继续研究EurekaClient的相关代码 老规矩,先看spring.factories文件,其中引入了一个配置类EurekaDiscoveryClie...

Java学习录
昨天
10
0
析构函数是否必须为虚函数?为何?

p517 在C++中,基类指针可以指向一个派生类的对象。如果基类的析构函数不是虚函数,当需要delete这个指向派生类的基类指针时,就只会调用基类的析构函数,而派生类的析构函数无法被调用。容易...

天王盖地虎626
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部