参考网站:LLVM系统入门

1 准备

1.1 编写一个c文件,命名为hello.c。

1.2 修改环境变量PATH

(1)vim /etc/profile
(2)添加 export PATH=/root/ollvm/obfuscator-llvm-4.0/build/bin/:$PATH
(3)source /etc/profile

这样可以直接使用clang命令,而无需指定其位置。

2 编译为本机可执行文件

clang hello.c -o hello

文件类型为ELF。

3 编译c文件

可以得到两种格式的IR

(1) 将c文件编译为 LLVM bitcode文件

clang -emit-llvm hello.c -c -o hello.bc

其中.bc格式是llvm的字节码的二进制形式。需要使用llvm-dis来查看,将LLVM位代码转换为人类可读的LLVM程序集。

llvm-dis < hello.bc | less

(2) 将c文件编译为.ll格式

clang -emit-llvm hello.c -S -o hello.ll

其中.ll格式是llvm字节码的文本形式,可以直接使用文本编辑器查看

4 执行

./hello

或者

lli hello.bc

lli是LLVM解释器,它可以直接执行LLVM bitcode文件

5 生成本机程序集

llc是LLVM后端编译器,它将LLVM bitcode转换为本机代码程序文件。

llc hello.bc -o hello.s

hello.s文件类型为ASCII text。

6 将本机程序集组装到程序中

gcc hello.s -o hello.native

7 执行本机代码程序

./hello.native

LLVM之clang相关推荐

  1. LLVM与Clang编译图例

    LLVM与Clang编译图例 参考链接: https://blog.csdn.net/u012874859/article/details/108530256

  2. LLVM与Clang局部架构与语法分析

    LLVM与Clang局部架构与语法分析 Clang与LLVM LLVM整体架构,前端用的是clang,广义的LLVM是指整个LLVM架构,一般狭义的LLVM指的是LLVM后端(包含代码优化和目标代码生 ...

  3. LLVM 与 Clang 介绍 — LinuxTOY

    LLVM 与 Clang 介绍 - LinuxTOY LLVM 是 Low Level Virtual Machine 的简称,这个库提供了与编译器相关的支持,能够进行程序语言的编译期优化.链接优化. ...

  4. llvm安装方式_安装 LLVM 和 Clang

    LLVM 是伊利诺伊大学的一个开源项目,LLVM 提供了完整的 C/C++工具链,Clang 属于其中的一个子项目,是 LLVM 原生的 " C/C++/Objective-C" ...

  5. 转:GCC,LLVM,Clang编译器对比

    GCC,LLVM,Clang编译器对比 转自: http://www.cnblogs.com/qoakzmxncb/archive/2013/04/18/3029105.html 在XCode中,我们 ...

  6. LLVM 与 Clang 介绍

    晚上听国软徐纪元学弟给我说起了他刚装上的 Mac Lion 操作系统,也说到了最近 Apple 推出的新版本的 Xcode 4.2 在 iOS 4.iOS 5 程序开发中,加入了 automatic  ...

  7. 什么事LLVM和Clang?Clang与GCC有什么区别?Clang如何使用?

    这个问题主要讲Xcode编译器的认知,在学习iOS之前有必要学习一下Objective-C的编译环境. 在了解LLVM和Clang之前,先得了解一下什么是编译器. 编译器是一种计算机程序,它将某种编程 ...

  8. 详解三大编译器:gcc、llvm 和 clang

    传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd). 编译器一般构成 传统的编译器通常分为三个部分,前端(frontEnd),优化器(Opti ...

  9. LLVM和Clang背后的故事

    LLVM是Apple官方支持的编译器,而该编译器的前端是Clang,这两个工具都被集成到了Xcode里面.在这篇文章中,我们来了解一下LLVM和Clang背后的故事. 在很长一段时间里,Apple一直 ...

  10. llvm编译linux,下载与编译LLVM和Clang

    最近写编译器,要用到LLVM,记录一下在Linux下编译和安装的过程. 准备 LLVM编译器架构的前端是Clang,狭义的LLVM是指它的后端. 我们可以通过SVN来下载LLVM和Clang最新的源码 ...

最新文章

  1. SAP PI 7.3新特性介绍
  2. [20180627]测试bbed是否支持管道命令.txt
  3. sqlite库 —— 为什么要使用 SQLite 数据库?
  4. SolidWorks学习笔记4特征
  5. Django框架(6.django后台管理/通过后台对数据表的增删改)
  6. 2012 IBM软件技术峰会:IBM与开发者谈四大热门领域看法
  7. 吴恩达斯坦福大学机器学习 CS229 课程学习笔记(一)
  8. Spark cluster 部署
  9. 数值计算及matlab实现,用MATLAB实现数值计算
  10. VBS ADODB操作帮助手册
  11. 我的微信公众平台*1*
  12. 免费资源分享(六) Unity3D 雷达实时定位插件
  13. 计算机公式求时间差公式,excel时间差计算公式有哪些 excel怎么快速计算时间差...
  14. 在jQuery中,a标签trigger触发click不起作用的原因和解决方法
  15. ANativeWindow
  16. CARD耐药数据库Linux使用
  17. 水质污染源在线监测数据采集器
  18. JS中或者(或 or ||)与并且(与 and )
  19. Barrier与多线程
  20. 地平线机器人Waymo Open Dataset Challenge中2D目标检测赛道第二名方案解析

热门文章

  1. 服务器上ssl协议禁止,“SSL协议被禁用,无法安全的连接”怎么处理
  2. java请求url拼接xml_java访问一个URL,会返回给你一个XML格式的数据,该怎么实现?...
  3. Tomcat,servlet以及netty之间的简单区别
  4. 阿里云环境迁移记录 - RabbitMQ集群搭建
  5. Spring 事务实现机制
  6. 打造线上的大数据风控,我们发现了这三个坑
  7. [BZOJ 3622]已经没有什么好害怕的了(Dp+容斥原理)
  8. mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication解决办法
  9. 【转载】偏最小二乘法回归(Partial Least Squares Regression)
  10. 使用JDBC编程的问题总结