一份关于各种安装LLVM的方法的总结

这是一篇可能会持续更新的博客,我想把安装LLVM的方法都列出来,以便于自己的查阅,也希望能对需要的朋友有所帮助。

这里面参考了很多前辈的资料,也有自己的摸索总结,前辈们的链接我会老老实实地在文章中贴好~(搓手手)

另:写这篇博客的前半年安装的llvm,在写这篇博客的时候,没有很多实时的截图,很多是当时安装的文字记录,有机会补图上来。

其中若有错误纰漏欢迎大家留言指正,我会及时更正。


首先贴一些基础的参考链接:

官网主页:http://llvm.org

中文官网主页:https://www.llvm.org.cn  LLVM的首页被翻译成了中文,首页中的很多链接里面的内容还是英文的。

官网提供的安装方法:http://clang.llvm.org/get_started.html

 

一、【方法一 】从LLVM官网下载预编译好的包

1. 在官网主页的左边栏有下载链接:

点击“All Release”可以看到所有LLVM版本的下载列表。http://releases.llvm.org

 从左到右,各列分别对应版本的发布时间、版本号、下载链接、发布说明(包含一些更新的信息)、开发文档

在查阅开发文档时,最好是查看下载的版本对应的文档,会获得准确的信息

2. 选择好版本之后,点击版本号后面的download,在Pre-Built Binaries下面,根据相应的操作系统下载不同的预编译文件。

 mac系统下载第一个Clang for Mac OS X(.sig),ubuntu系统根据具体情况下载Clang for x86_64 Ubuntu XXX(.sig).

3. 下载之后解压到一个目录下,解压后的文件夹下包含bin,include,lib,libexec,share文件夹

将bin文件夹添加进环境变量

环境变量的添加可参考的链接很多,比如参照链接:https://www.cnblogs.com/shineqiujuan/p/4693404.html

在ubuntu下环境变量添加方法:

将下载的预编译包解压(clang+llvm-5.0.1-x86_64-linux-gnu-ubuntu-14.04)放在home目录下,

在ubuntu中添加环境变量的命令:

sudo gedit /etc/profile

添加以下两行命令:

export LLVM_HOME=/home/xxx(your usrname)/clang+llvm-5.0.1-x86_64-linux-gnu-ubuntu-14.04/bin

export PATH=$LLVM_HOME:$PATH

当然,如果觉得clang+llvm-5.0.1-x86_64-linux-gnu-ubuntu-14.04太长,改一个短一些的可识别的文件夹的名字即可。

在mac下环境变量添加方法之一:(单个用户设置)

在命令行中,执行以下命令:

touch  ~/.bash_profile  创建

vim  ~/.bash_profile  打开并编辑

点一下向下箭头,点E 进入bash_profile文件

点i进入编辑模式,进行编辑

编辑完成后,点esc 退出

直接输入 ::wq!   这四个字符后,回车

一般环境变量修改后,重启后生效,如果想立即生效,执行:

source  ~/.bash_profile 

4.下载cmake

ubuntu下载cmake直接:sudo apt install cmake

配置cmake环境变量

mac上是:export PATH=/Applications/CMake.app/Contents/bin:$PATH

5.通过以上步骤,简单的llvm使用基本上就没问题了。

二、【方法二】根据LLVM官网教程编译源码进行安装(Unix-like System)

安装方法链接:http://clang.llvm.org/get_started.html

或者这个链接:http://llvm.org/docs/GettingStarted.html

按照官网步骤来即可,以下的内容是翻译和少许采坑补充:

Overview概述

欢迎使用LLVM!为了开始上手,你首先需要知道以下的一些基础信息。

首先LLVM是由三部分组成的。LLVM suite + Clang front end + Test suite(optional)

  • LLVM suite包含使用LLVM时所需要的:工具(tools),库(libraries),头文件(header files),还包含一个assembler,disassembler,bitcode analyser,bitcode optimizer,也包含基本的回归测试regression tests,用于测试LLVM工具和Clang前端。
  • Clang front end负责将 C, C++, Objective C, and Objective C++ 代码编译成LLVM的bitcode(一种中间代码)。一旦被编译成LLVM的bitcode,程序就能被LLVM suite中的LLVM工具所操作。
  • Test Suite拥有一个testing harness,可以用于对LLVM的功能和性能进行更多的测试。

Getting Started Quickly 快速开始(命令行安装教程)

http://clang.llvm.org/get_started.html这个链接中的Getting start更新会及时一些。

1.读文档

2.读文档

3.两次提醒读文档

4.Checkout LLVM

  • cd where-you-want-llvm-to-live(添加一个你想放置LLVM的路径)
  • svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm

5.Checkout Clang

  • cd where-you-want-llvm-to-live (跟4中相同的LLVM的路径)
  • cd llvm/tools
  • svn co http://llvm.org/svn/llvm-project/cfe/trunk clang

6.Checkout Extra Clang Tools [不是必须的,可选]

  • cd where-you-want-llvm-to-live(跟4中相同的LLVM的路径)
  • cd llvm/tools/clang/tools
  • svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra

7.Checkout LLD linker [不是必须的,可选]

  • cd where-you-want-llvm-to-live(跟4中相同的LLVM的路径)
  • cd llvm/tools
  • svn co http://llvm.org/svn/llvm-project/lld/trunk lld

8.Checkout Polly Loop Optomizer [不是必须的,可选]

  • cd where-you-want-llvm-to-live(跟4中相同的LLVM的路径)
  • cd llvm/tools
  • svn co http://llvm.org/svn/llvm-project/polly/trunk polly

9.Checkout Compiler-RT(Required to build the sanitizers) [不是必须的,可选]

  • cd where-you-want-llvm-to-live(跟4中相同的LLVM的路径)
  • cd llvm/projects
  • svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt

10.Checkout Libomp(required for OpenMP support) [不是必须的,可选]

  • cd where-you-want-llvm-to-live(跟4中相同的LLVM的路径)
  • cd llvm/projects
  • svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp

11.Checkout libcxx and libcxxabi [不是必须的,可选]

  • cd where-you-want-llvm-to-live(跟4中相同的LLVM的路径)
  • cd llvm/projects
  • svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
  • svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi

12.Get the Test Suite Source Code [不是必须的,可选]

  • cd where-you-want-llvm-to-live
  • cd llvm/projects
  • svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite

【注】:svn中checkout的意思是“迁出”,把代码从代码库下载到本地。

               build=compile+link,build中文意思可以理解为“编译链接”或一个笼统的“构建”

13.配置和构建(build)LLVM和Clang

需要使用cmake工具,在此之前需要确认已经有必要的所有的源代码,在cmake的build过程中不会允许新增源代码目录。

LLVM需要CMake3.4.3及以上版本来build,通常建议使用最新版本的CMake,特别是在生成Ninja的build文件的时候。因为Ninja的生成器(generator)与CMake的生成器(generator)有很大的关联。

CMake的安装、使用指南参见http://llvm.org/docs/CMake.html

安装CMake之后需要为CMake配置环境变量,便于CMake在命令行中能够使用。

不能够在LLVM的源码目录下build,这是不支持的。必须新建一个build目录,在这个目录下完成13的操作。

操作步骤如下:

  • cd where you want to build llvm 

  • mkdir build

  • cd build

  • cmake -G <generator> [options] <path to llvm sources>

  • make -j4

其中<generator>有以下选项:(也就是可以把<generator>这一坨,替换为以下选项之一)

  • Unix Makefiles      用于生成兼容的parallel makefiles
  • Ninja                      用于生成Ninja的build文件。大部分的llvm开发者都使用Ninja.(也就是说LLVM官方文档建议使用Ninja生成)
  • Visual Studio         用于生成Visual Studio的工程和解决方案
  • Xcode                    用于生成Xcode工程

其中[options]可以不写,如果要写的话,有以下选项:

  • -DCMAKE_INSTALL_PREFIX=directory       等号后面的“directory”表示需要写清楚你想要LLVM tools和libraries安装在哪个路径下,默认路径是/usr/local
  • -DCMAKE_BUILD_TYPE=type        等号后面的“type” 可以填:Debug或Release或RelWithDebInfo或MinSizeRel。默认值是Debug(这里实际一般选Release,Debug版本太大)
  • -DCMAKE_ENABLE_ASSERTIONS=on         在编译时开启断言检查,默认开启后只对Debug版本有用,对其他build版本无用

其中make工具的说明:

  • make 后面不填任何选项的话,是默认build整个LLVM工程
  • make 后面添加“check-all”,即 make check-all的话,会运行回归测试(regression tests)保证所有按顺序工作
  • CMake会为每个工具和库生成build target,并且很多LLVM的子工程(sub-projects)会生成自己的check-<project>的target
  • 运行一条build的话会很慢(是非常非常慢,亲身试过),一定要使用parallel build的方式运行,对于make工具来说,用make -j.(make -4j)

如果在build的过程中,遇到了“internal compiler error(ICE)”或者是测试失败,官网上建议:

(1)查看http://llvm.org/docs/GettingStarted.html#getting-started-with-llvm这一章节了解清楚LLVM的配置和编译的细节信息

(2)了解一下源码树的层次结构http://llvm.org/docs/GettingStarted.html#directory-layout

  (1)(2)中内容的翻译,我会在我的其他的博客中进行介绍,欢迎指正。

猜你喜欢

转载自blog.csdn.net/chikey/article/details/85004556