目录

前言

一、LLVM简介

二、LLVM+Clang的安装


前言

最近可能要学习编译器相关的知识,因此总结一下LLVM的安装方法,以防忘记如何安装。

接下来就是正式的安装过程了。。。

------------------------------------------------------------分割线---------------------------------------------------------------------------------------------------

一、LLVM简介

LLVM是Low Level Virtual Machine 的缩写,它源自于伊利诺伊大学的一个开源研究项目,旨在提供一种现代化的编译机制,使得对于任何的语言既可以做到静态编译也可以动态编译,并且非常高效。后来LLVM孵化了很多的子项目,例如:Clang,LLDB,OpenMP等。

静态编译:编译器在编译可执行文件时,把需要用到的对应动态链接库(.so或.ilb)中的部分提取出来,链接到可执行文件中                    去,使可执行文件在运行时不需要依赖于动态链接库。

动态编译:动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其                     优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很                     简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没                     有安装对应的运行库,则用动态编译的可执行文件就不能运行。

LLVM由三部分组成:

第一部分是LLVM套件,它包含有LLVM所需的所有工具、库函数、和头文件,汇编器、反汇编器、bitcode(一种中间代码)分析器和优化器,以用来测试LLVM和Clang前端的基本回归测试。

第二部分是Clang前端,它将C/C++,Object C和Object C++代码编译成LLVM的中间代码(bitcode),一旦编译成LLVM bitcode,就可以使用LLVM的套件中的LLVM工具来进行操作了。

第三部分是测试集合,这是一个可选部分。它是一套能用来进一步测试LLVM功能和性能的程序。

二、LLVM+Clang的安装

准备工作

LLVM官方是用svn进行版本控制的,因此我们需要安装svn来获取源码。

安装过程中会用到cmake工具来生成Makefile,需要先安装cmake。

sudo apt-get install subversion
sudo apt-get install cmake

构建安装目录

#创建一个目录用来存放llvm源码
mkdir /tmp/llvm_source_build

下载LLVM核心源代码

#下载llvm代码
cd /tmp/llvm_source_build
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm

此时在/tmp/llvm_source_build目录下就会有一个llvm目录。

下载Clang源码

在/tmp/llvm_source_bulid/llvm/tools目录下下载clang。

#下载Clang源码
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang

下载 Clang 工具源码(可选)

cd llvm/tools/clang/tools
svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra

下载Compiler-RT 源码(可选)

cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt

还有一系列的可选项可以下载安装,这些并不主要,若需要可以查看参考文献2。

配置和安装LLVM+Clang

首先返回到/tmp/llvm_source_build目录下,新建一个build目录。

#新建build目录
cd /tmp/llvm_source_build
mkdir build

使用之前安装的cmake得到Makefile文件

cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_INSTALL_PREFIX=/opt/llvm ../llvm

上面的-CMAKE_INSTALL_PREDIX=/opt/llvm 表示要安装的目录。

得到Makefiile文件之后几可以进行编译和安装了

make -j 8
sudo make install

最后还需要配置一下环境变量。

#配置一下环境变量
vim /etc/profile
#在末尾添加
export PATH=$PATH:/opt/llvm/bin

参考文献:

1.https://www.xuebuyuan.com/3122442.html

2.http://llvm.org/docs/GettingStarted.html

3.https://www.jianshu.com/p/861c1a630059

安装LLVM+Clang教程相关推荐

  1. 在Linux上编译LLVM/Clang 8.0.0等全部源代码

    2019独角兽企业重金招聘Python工程师标准>>> 本教程使用的操作系统是Ubuntu Linux 18.04.2 LTS版本,编译器是GCC 6.5.0(不用新版的原因是某些代 ...

  2. llvm编译linux,在Linux上编译LLVM/Clang 8.0.0等全部源代码

    本教程使用的操作系统是Ubuntu Linux 18.04.2 LTS版本,编译器是GCC 6.5.0(不用新版的原因是某些代码不支持更高的版本),要编译的LLVM源代码是8.0.0. 1.安装必要的 ...

  3. java调用clang编译的so_在Linux上编译LLVM/Clang等全部源代码

    本教程使用的操作系统是Ubuntu Linux 18.04 LTS版本,编译器是LLVM/Clang 6.0,要编译的LLVM源代码是6.0.1. 1.安装必要的软件.它们是:cmake/swig/p ...

  4. LLVM+Clang编译安装卸载

    下载的是最新版本的代码,LLVM+Clang编译安装比较耗硬件资源,8核16G内存300G硬盘,硬盘是分两块,一块100G,另一块是200G.即使顺利跑完,保守估计也要3个小时,编译目录生成的文件有8 ...

  5. 怎么用pe安装服务器系统安装系统,pe下安装服务器系统安装教程

    pe下安装服务器系统安装教程 内容精选 换一换 安装完MindStudio并进入相关工程页面后,如果用户使用算子工程或应用工程开发了相关程序,需要进行工程的编译和运行,用于生成相关二进制文件,进行工程 ...

  6. Clang教程之实现源源变化

    clang教程之实现源源变化 声明:本教程来自于Eli Bendersky's website 原文地址:http://eli.thegreenplace.net/2014/05/01/modern- ...

  7. 在windows下使用llvm+clang

    clang是FreeBSD和Mac下C/C++语言的默认编译器.如果你在苹果下做过开发,那么应该对它很熟悉. 这套工具链有很多优点: 代码很新,架构优良. 错误信息更友好. 静态检查功能更强大. 版权 ...

  8. 【转】ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍

    转自:ARM 之七 主流编译器(armcc.iar.gcc for arm.LLVM(clang))详细介绍_itexp-CSDN博客_armcc 必备   在讲解各编译器之前,必须先了解一下以下文件 ...

  9. carla安装之clang版本问题

    carla要求的是clang8.0,我最一开始没有关注到这个. 使用的方法是 sudo apt-get install llvm 先安装llvm,然后 sudo apt-get install cla ...

最新文章

  1. 仿WINDWS无限级Ajax菜单树升级1.2版(菜单名支持非法字符)
  2. 线程:Timer定时器
  3. 【OpenCV3】图像的读取、显示与保存
  4. 服务器系统报错kernel-power,第十二讲、Linux服务器操作系统1.ppt
  5. 【JS】引用类型之String
  6. 期待已久!iPhone 13将使用带LTPO技术的OLED屏幕
  7. win服务器自动发邮件,asp.net基于windows服务实现定时发送邮件的方法
  8. LaTeX学习笔记(legacy)~
  9. PHP调用shell命令
  10. eNSP------三层交换机配置(拓扑图+命令)
  11. javascript中(function(){})($)与$(function)的区别
  12. python快递价格查询系统
  13. 4 描述性统计量和统计图
  14. 20170223找女朋友之路思考总结
  15. 2021年PAT乙级春季真题
  16. [转帖]房博士教你购房(二)
  17. 母版页的详细使用介绍
  18. 从软件工程师到IT猎头续:告诉你如何写简历
  19. The Shawshank Redemption-1
  20. 【tutorabc多少钱一节课】上完课的我来说说真实感想

热门文章

  1. 解决System.Reflection.TargetInvocationException: 调用的目标发生了异常。
  2. 2021-11-25:给定两个字符串s1和s2,返回在s1中有多少个子串等于s2。来自美团。
  3. 用node.js搭建自己的服务器
  4. Linux入门基础之 中
  5. 一网打尽!CMS收集器和G1收集器的区别
  6. 2个阶乘什么意思_2的阶乘的阶乘是什么啊?就是2!!代表的什么意思?怎样计算?谢谢...
  7. java实现压缩包的解压,支持rar/zip格式
  8. TCP协议常见的端口
  9. Python YYDS,轻松控制你的手机!
  10. 使用Audition制作提示音方法