天在CentOS上将最新版本的LLVM套件(LLVM,Clang和Libc++)编译安装好了,中间遇到了不少问题。虽然已经有很多博客介绍如何编译安装LLVM了,但是根据我自己亲身体验的情况来看,还是有地方需要注意的,也有东西值得跟大家分享一下。

下面开始:

首先从http://releases.llvm.org/download.html#4.0.1这边下载最新的版本。如果从SVN下载代码的话,已经是5.0的开发版本了。如果需要使用稳定版本,推荐自己下载4.0.1的代码包,需要下载4个文件:

LLVM source code

Clang source code

Clang Tools Extra source code

Compiler RT source code

下载好了以后,四个压缩包都解压出来,得到四个目录:

llvm-4.0.1.src

cfe-4.0.1.src

clang-tools-extra-4.0.1.src

compiler-rt-4.0.1.src

然后按下面的步骤组织:

mv cfe-4.0.1.src clang
mv clang/ llvm-4.0.1.src/tools/ mv clang-tools-extra-4.0.1.src extra
mv extra/ llvm-4.0.1.src/tools/clang/ mv compiler-rt-4.0.1.src compiler-rt
mv compiler-rt llvm-4.0.1.src/projects/

这样以后clang,clang-tools-extra和compiler-rt就可以和llvm一起编译了。

在llvm-4.0.1.src同一层目录上新建个目录build-4.0.1并进入:

mkdir build-4.0.
cd build-4.0.

然后Configure and build LLVM and Clang:

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On ../llvm-4.0..src/
  • -DCMAKE_INSTALL_PREFIX=directory — Specify for directory the full pathname of where you want the LLVM tools and libraries to be installed (default /usr/local).
  • -DCMAKE_BUILD_TYPE=type — Valid options for type are Debug, Release, RelWithDebInfo, and MinSizeRel. Default is Debug.
  • -DLLVM_ENABLE_ASSERTIONS=On — Compile with assertion checks enabled (default is Yes for Debug builds, No for all other build types).

注意 : 这后两个选项推荐大家加上 ,否则会产生巨大的文件,我第一次编译的时候,没有加上这两个选项,编译出来的结果多大 9.4G (够吓人的吧?把我的磁盘都耗尽了,还报错,google了好久才发现是磁盘空间不够) ,耗时超过一个半小时。

然后make:

make -j 4
  • The default target (i.e. make) will build all of LLVM
  • The check-all target (i.e. make check-all) will run the regression tests to ensure everything is in working order.
  • CMake will generate build targets for each tool and library, and most LLVM sub-projects generate their own check-<project> target.
  • Running a serial build will be slow. Make sure you run a parallel build; for make, use make -j.

尽量把几个核都用上,加快编译速度。

然后make install:

sudo make install

最后,因为是按照自己指定的路径安装,所以需要添加环境变量。

echo "export PATH=$PATH:/usr/local/clang/bin" >> /etc/bashrc
. /etc/bashrc

安装过程主要参考这几篇文章:

http://clang.llvm.org/get_started.html

http://llvm.org/docs/GettingStarted.html#checkout

http://www.cnblogs.com/Frandy/archive/2012/10/20/llvm_clang_libcxx_cxx11.html

http://www.cnblogs.com/ralphjzhang/archive/2011/12/02/2272671.html

http://www.tuicool.com/articles/ZBveeu

CentOS 7 编译安装clang+llvm的更多相关文章

  1. centos下编译安装lnmp

    centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ...

  2. CentOS 7 编译安装 Code::Blocks

    CentOS 7 编译安装 Code::Blocks yum install cairo-devel yum install pango-devel yum install atk-devel yum ...

  3. centos mysql 编译安装

    centos mysql 编译安装 1.安装 创建MySQL用户 sudo useradd mysql 下载MySQL的源码包,我们这里使用的时5.5.18 安装依赖 sudo yum -y inst ...

  4. 转:在CentOS下编译安装GCC

    转:https://teddysun.com/432.html 在CentOS下编译安装GCC 技术  秋水逸冰  发布于: 2015-09-02  更新于: 2015-09-02  6519 次围观 ...

  5. CentOS 下编译安装Apache

    CentOS 下编译安装Apache 卸载原有的apache 首先从 http://httpd.apache.or 下载apache源码包httpd-2.4.4.tar.gz然后从 http://ap ...

  6. Centos 7 编译安装llvm 8.0.0

    参考连接:https://www.cnblogs.com/BinBinStory/p/7499527.html https://blog.csdn.net/llwy1428/article/detai ...

  7. CentOS 6.5 安装Clang 3.5.0

    来自引用: http://www.cnblogs.com/dudu/p/4294374.html 编译llvm几乎耗费了1个小时-.. 编译CoreCLR需要Clang 3.5,而CentOS上安装的 ...

  8. centos系统编译安装nginx+php环境另加独立mysql教程

    以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...

  9. centos手动编译安装apache、php、mysql

    64位centos 5.5手动安装lamp,要求curl.json.pdo_mysql.gd,记录如下. centos 5.4.5.5.5.6的内核都是2.6.18,都可以安装php 5.3. 卸载旧 ...

随机推荐

  1. 关于vue+axios上传文件的踩坑分析

    上传文件是每个前端开发者都会遇到的问题,在之前实习期做了一个上传文件的功能,当时没有彻底搞明白问题所在,现在重新复盘下. 1.使用formData来上传文件,没有使用axios上传文件,之前在学校有做 ...

  2. Generative Adversarial Networks overview(1)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章会先从Gan的简单应用示例讲起,从三个方面问题以及解决思路覆盖25篇GAN论文,第二个大部分会进一步 ...

  3. 如何查看WinDbg扩展有哪些命令

    如果您想查看任何windbg扩展所支持的命令,可以采用各种方法. 你可以用!<ext_name>.help命令查看该扩展支持的所有命令.用扩展模块名替换<ext_name>.( ...

  4. pipelinewise 基于singer 指南的的数据pipeline 工具

    pipelinewise 是基于开源singer 指南开发的数据pipeline工具,与singer tap 以及target 兼容 支持的特性 内置的elt 特性 轻量级 支持多种复制方法,cdc( ...

  5. [RN] React Native Fetch请求设置超时

    一.实现思路 根据Promise.race的特性,我们在Promise.race里面添加两个任务,一个是正常的网络请求任务A,另外一个便是网络延时任务B,网络延时可以利用setTimeout方法实现. ...

  6. kafk设计要点

    kafka的设计目标是高吞吐量,所以kafka自己设计了一套高性能但是不通用的协议,他是仿照AMQP( Advanced Message Queuing Protocol   高级消息队列协议)设计的 ...

  7. 应用Synopsys Synplify 综合的注意一个问题

    在Xilinx ISE中使用Synopsys Synplify综合时,注意约束文件*.ucf需在当前工程的文件夹下.不要将其它文件夹下的同名文件的约束当成当前工程下文件的约束.

  8. [sdoi 2017]树点涂色

    传送门 Description Bob 有一棵\(n\)个点的有根树,其中\(1\)号点是根节点.Bob 在每个节点上涂了颜色,并且每个点上的颜色不同. 定义一条路径的权值是,这条路径上的点(包括起点 ...

  9. 关于org.apache.lucene.queryParser.ParseException: Encountered "" 解决方法

    现象: org.apache.lucene.queryParser.ParseException: Encountered "<EOF>" at line 1, col ...

  10. SQL on Hadoop技术综述

    一.系统架构 runtime framework v.s. mpp 在SQL on Hadoop系统中,有两种架构: 1.一种是基于某个运行时框架来构建查询引擎,典型案例是Hive: 2.另一种是仿照 ...