llvm之clang前端的一些例子:
来源:互联网 发布:电信宽带网络线路故障 编辑:程序博客网 时间:2024/05/01 20:39
这是我第一次写博客,最近刚刚接触llvm,写这篇blog主要是边学习边总结,当然有很多理解不到位,甚至是错误的地方。我非常愿意和大家一起探讨,请教llvm的相关知识。这篇blog不求能帮助大家,只求能不误导大家就好。以后也要养成写blog的习惯,在这里非常感谢@snsn1984 在他blog里我学到很多东西,也正是这个原因激发了自己写blog的动力,希望能够坚持下去。有问题也希望能够和大家一起探讨!
这些例子来源于http://llvm.org/docs/GettingStarted.html#requirements,大家最好参照一下,以免我误导大家!
llvm之clang前端的一些例子:
1.首先写一个最简单的C程序,名字叫hello.c
include <stdio.h>int main() { printf("hello world\n"); return 0;}
2.接下来,编译C文件到本机的可执行文件:
% clang hello.c -o hello
当然这里的clang必须需要用
export PATH="$PATH:/usr/local/llvm/build/bin"
让clang变为默认的编译器(个人理解),不然就会报 程序 'clang' 已包含在下列软件包中:
* clang-3.3
* clang-3.4
* clang-3.5
请尝试:apt-get install <选定的软件包>
这样的问题。
3.接下来,编译C文件成LLVM bitcode文件:
clang -O3 -emit-llvm hello.c -c -o hello.bc
这种是生成二进制的.bc文件:
如果是
clang -O3 -emit-llvm hello.c -S -o hello.ll
就生成的是.ll文件,这个文件是可读的,可以通过文本编辑器打开的,这样我们就可以直观的得到IR的两种格式。
4.可以有两种方式来运行我们的程序:
./hello
这中大家肯定都很熟悉,还有一种:
lli hello.bc
第二个例子是调用了llvm的JIT,LLI。
5.使用LLVM-DIS工具来看看LLVM的汇编代码:
llvm-dis < hello.bc | less
也就是看.ll文件中的IR内容。
6.编译程序使用LLC代码生成器生成汇编语言文件:
llc hello.bc -o hello.s
7.汇编语言文件生成一个程序:
/opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.native # On Solaris
Solaris 是Sun Microsystems研发的计算机操作系统。它被认为是UNIX操作系统的衍生版本之一
gcc hello.s -o hello.native # On others
8.执行上面生成的程序
./hello.native
值得注意的是使用clang直接编译为本地代码(即当-emit,LLVM选项不存在)则步骤5/6/7/8可以使用。
0 0
- llvm之clang前端的一些例子:
- LLVM每日谈之二十一 一些关于编译器和LLVM/Clang的代码
- LLVM与Clang的介绍
- LLVM(Clang)的编译过程
- LLVM代码研读(2) --- LLVM前端: Clang剖析
- LLVM每日谈之十七 LLVM/Clang的学习的思考
- LLVM/Clang
- LLVM & Clang
- Clang - 是LLVM的前端,可以用来编译C,C++,ObjectiveC等语言
- LLVM每日谈之七 Clang
- LLVM每日谈之七 Clang
- iphone-命令行编译之--LLVM与Clang
- LLVM与Clang-开发者的惊愕
- 利用LLVM,Clang制作自己的编译器
- llvm+clang的安装(使用cmake)
- LLVM与Clang的概述及关系
- LLVM和Clang背后的故事
- LLVM和Clang背后的故事
- ZOJ3646 The Dragon of Loowater
- 【算法】——插入排序(一)
- 一种智能指针的实现方式
- 软件测试知识点整理
- Sql Server 里的向上取整、向下取整、四舍五入取整的实例!
- llvm之clang前端的一些例子:
- 测试的方式
- JavaScript面向对象编程指南(第2版) 笔记
- Convolutional Neural Networks (LeNet)
- App开放接口api安全性—Token签名sign的设计与实现
- [Qt] CFlip 翻页功能实现
- 字符串和AscII码转换
- N-gram模型
- 常量在计算机中的存储形式