LLVM每日谈之三 如何创建一个LLVM工程

简介: 作者:snsn1984 阅读了文档《Creating an LLVM Project》(地址:http://llvm.org/docs/Projects.html)之后,自己照着做了一遍,记录一下自己的过程。

作者:snsn1984

阅读了文档《Creating an LLVM Project》(地址:http://llvm.org/docs/Projects.html)之后,自己照着做了一遍,记录一下自己的过程。

实际做的时候跟文档上还是有不同的。

1.首先我系统上的llvm3.1是之前已经下好,并且make过的。我打开llvm-3.1/projects目录,看到下面有一个我之前放的compiler-rt目录和另外一个本来这里就有的sample。把sample这个文件夹copy到llvm3.1的同级目录。修改文件夹名字为MyFirstLLVM。

2. 打开MyFirstLLVM/autoconf目录,打开configure.ac.

3. AC_INIT后面的括号里面有三个中括号,第一个中括号要填的是这个项目的名字,第二个是这个项目的版本号,第三个是作者的联系邮箱,可改可不改。

4. 因为现在MyFirstLLVM已经和llvm-3.1在同级目录了,所以修改接下来的LLVM_SRC_ROOT="../../llvm-3.1" LLVM_OBJ_ROOT="../../llvm-3.1/build"。llvm-3.1/build目录是我编译llvm-3.1的目录。

5. 修改AC_CONFIG_AUX_DIR后面的内容为:(["../../llvm-3.1/autoconf"])。

6. 然后保存,在terminal中运行./AutoRegen.sh。这时候系统提示:Your autoconf was not detected as being 2.5x or 2.6x。

7. 查了下,是机器上没装autoconf的缘故,使用sudo apt-get install autoconf安装之后,就可以正常运行了。

8. 然后在MyFirstLLVM目录之下,建立一个build目录,在build目录下运行../configure。

9. 在build目录下运行make,结束之后可以看到build目录下有一个Release+Asserts目录,打开这个目录,可以看到lib和bin两个目录。

10. 在bin目录之下运行./Sample得到一个输出的结果5。

这样就已经完成了一个LLVM工程的建立。这是建立LLVM工程的两种方式之一,另外一种方式就是从零开始,自己一点一点建立,这样相对来说会复杂点。


PS:

建立LLVM工程和编译LLVM是两回事,不要搞混了。


目录
相关文章
|
编译器 iOS开发 Windows
带你读《LLVM编译器实战教程》之一:构建和安装LLVM
本书的前半部分将向您介绍怎么样去配置、构建、和安装LLVM的不同软件库、工具和外部项目。接下来,本书的后半部分将向您介绍LLVM的各种设计细节,并逐步地讲解LLVM的各个编译步骤:前段、中间表示(IR)、后端、即时编译(JIT)引擎、跨平台编译和插件接口。本书包含有大量翔实的示例和代码片段,以帮助读者平稳顺利的掌握LLVM的编译器开发环境。
20416 0
|
编译器 C++ 前端开发
带你读《LLVM编译器实战教程》之三:工具和设计
本书的前半部分将向您介绍怎么样去配置、构建、和安装LLVM的不同软件库、工具和外部项目。接下来,本书的后半部分将向您介绍LLVM的各种设计细节,并逐步地讲解LLVM的各个编译步骤:前段、中间表示(IR)、后端、即时编译(JIT)引擎、跨平台编译和插件接口。本书包含有大量翔实的示例和代码片段,以帮助读者平稳顺利的掌握LLVM的编译器开发环境。
|
C++ 编译器 C语言
带你读《LLVM编译器实战教程》之二:外部项目
本书的前半部分将向您介绍怎么样去配置、构建、和安装LLVM的不同软件库、工具和外部项目。接下来,本书的后半部分将向您介绍LLVM的各种设计细节,并逐步地讲解LLVM的各个编译步骤:前段、中间表示(IR)、后端、即时编译(JIT)引擎、跨平台编译和插件接口。本书包含有大量翔实的示例和代码片段,以帮助读者平稳顺利的掌握LLVM的编译器开发环境。
|
编译器 程序员
LLVM每日谈之十一 编译器相关学习资料推荐
作者:snsn1984 近来碰到一些想学习LLVM但是已经把编译原理的知识还给老师的朋友,让帮忙推荐一些学习资料,我就把手头有的一些资料,大都是自己读过的一些资料整理一下,列出来,希望对大家有所帮助。
1231 0
|
10月前
|
缓存 编译器 Go
Build实战指南:优雅编译,高效开发
Build实战指南:优雅编译,高效开发
182 0
|
Android开发 C语言 C++
《深入理解LLVM》第一章 LLVM简介
第一章 LLVM简介 作者:史宁宁 1.1 LLVM是什么 LLVM是什么?这是一个虽然基础,但是也曾经让很多新入门的人迷惑的一个问题。从字面上来讲,LLVM(Low Level Virtual Machine)是一个底层虚拟机,LLVM曾经有一部分功能对虚拟机有所帮助。
2576 0
|
自然语言处理 前端开发 安全
iOS-底层原理 31:LLVM编译流程 & Clang插件开发
iOS-底层原理 31:LLVM编译流程 & Clang插件开发
627 0
iOS-底层原理 31:LLVM编译流程 & Clang插件开发
|
4月前
|
前端开发 编译器 C++
什么是LLVM项目?
什么是LLVM项目?
136 37
|
10月前
|
编译器 程序员 C语言
静态库与动态库的构建(含具体代码可以实操)
静态库与动态库的构建(含具体代码可以实操)
71 0
|
前端开发 编译器 C++
深入研究Clang(一)Clang和LLVM的关系及整体架构
作者:史宁宁(snsn1984) Clang和LLVM的关系        Clang和LLVM到底是什么关系,这是在研究Clang的过程中所不可避免的一个问题。
1809 0