在Linux CentOS上编译并安装Clang 3.5.0
编译CoreCLR需要Clang 3.5,而CentOS上安装的是Clang 3.4.2(yum repos中最新版也是这个),只能自己手工编译LLVM的源代码进行安装。
(注:CentOS的版本是6.6)
一、安装libstdc++4.7
(注:如果是CentOS 7.0,不需要这步)
- wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
- yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++
- ln -s /opt/rh/devtoolset-2/root/usr/bin/* /usr/local/bin/
如果不安装,在configure配置编译选项时会出现下面的错误提示:
- We detected a missing feature in the standard C++ library that was known to be
- missing in libstdc++4.6 and implemented in libstdc++4.7. There are numerous
- C++11 problems with 4.6's library, and we don't support GCCs or libstdc++ older
- than 4.7.
二、安装Python 2.7.9
(注:如果是CentOS 7.0,不需要这步)
CentOS 6.6自带的是Python 2.6.6,而编译llvm需要Python 2.7以上。
1)安装编译Python需要的包包
- yum install zlib-devel
- yum install bzip2-devel
- yum install openssl-devel
- yum install ncurses-devel
- yum install sqlite-devel
2)下载并解压Python 2.7.9的源代码
- cd /opt
- wget --no-check-certificate https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz
- tar xf Python-2.7.9.tar.xz
- cd Python-2.7.9
3)编译与安装Python 2.7.9
- ./configure --prefix=/usr/local
- make && make altinstall
4)将python命令指向Python 2.7.9
- ln -s /usr/local/bin/python2.7 /usr/local/bin/python
三、添加交换分区
如果编译的机器内存比较小,建议添加交换分区。我当时测试的机器只有1G内存,在编译过程中出现了“c++: internal compiler error: Killed (program cc1plus)”错误。
1)创建并激活交换文件(比如2G):
- dd if=/dev/zero of=/swapfile bs=1k count=2048000
- mkswap /swapfile
- swapon /swapfile
2)修改 /etc/fstab 文件让交换文件启动时自动加载,添加如下内容:
- /swapfile swap swap defaults 0 0
四、编译LLVM
1)下载llvm的源代码
- http://llvm.org/releases/3.5.0/llvm-3.5.0.src.tar.xz
- mv llvm-3.5.0.src llvm
2)下载clang的源代码
- cd llvm/tools
- wget http://llvm.org/releases/3.5.0/cfe-3.5.0.src.tar.xz
- tar xf cfe-3.5.0.src.tar.xz
- mv cfe-3.5.0.src clang
3)下载compiler-rt的源代码
- cd ../projects
- wget http://llvm.org/releases/3.5.0/compiler-rt-3.5.0.src.tar.xz
- tar xf compiler-rt-3.5.0.src.tar.xz
- mv compiler-rt-3.5.0.src compiler-rt
4)配置编译选项
- cd ..
./configure --enable-optimized CC=gcc CXX=g++
5)编译llvm
- make -j2
编译成功后的提示:
- llvm[0]: ***** Completed Release+Asserts Build
6)安装编译好的llvm
- make install
会安装在/usr/local/bing中
7)检查clang的版本
- # clang --version
- clang version 3.5.0 (tags/RELEASE_350/final)
如果还是旧版本,需要将/usr/bin/clang指向clang 3.5.0:
- ls -s /usr/local/bin/clang /usr/bin/clang
【相关链接】
在Linux CentOS 6.6上安装Python 2.7.9
在Linux CentOS上编译并安装Clang 3.5.0的更多相关文章
- 在Linux CentOS上编译CoreCLR
经过几天的努力,终于解决了在CentOS上编译CoreCLR的问题.最终发现问题是CMAKE_C_FLAGS的设置引起的. 只要在“src/pal/tools/clang-compiler-overr ...
- centos上源码安装clang 3.8
之前想在centos系统上安装clang 3.6版本,由于yum上版本太低,想通过源码编译安装.按照网上说的源码安装步骤,下好llvm.clang.clang-tools-extra和compiler ...
- 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法
这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...
- NoSql1 在Linux(CentOS)上安装memcached及使用
前言: 今天是初五,生活基本要从过年的节奏中回归到正常的生活了,所以想想也该想想与工作有关的事情了.我之前在工作中会经常使用memcached和redis,但是自己一直没有时间系统的好好看 ...
- Linux CentOS上安装 MySQL 8.0.16
前言: 因为我需要在我新安装的Linux CentOS系统服务器中安装和配置MySQL服务器,然而对于我们这种Linux使用小白而言在Linux系统中下载,解压,配置MySQL等一系列的操作还是有些耗 ...
- 如何在linux CentOS 上安装chrome 谷歌浏览器?
获得linux命令的root权限:http://blog.csdn.net/mddy2001/article/details/76521101. 更改密码在终端中输入:sudo passwd root ...
- 在Linux CentOS上部署Asp.Net Core项目(Tengine、Asp.Net Core、Centos、MySql)
一.前言 1.简单记录一下Linux CentOS 7中安装与配置Tengine的详细步骤. 2.简单比较一下Tengine 和Nginx 3.搭建Asp.net Core和部署 Web程序 4.总结 ...
- 【转】Centos下编译升级安装Boost
https://www.xingchenw.cn/article/191 Centos下编译升级安装Boost 首先在官网现在相应的包 https://www.boost.org/users/down ...
- CentOS上使用yum安装Apache
关键词 CentOS上使用yum安装Apache 摘要 Apache在Linux系统中,其实叫“httpd”,它“无耻的”占据了官方名义!CentOS可以使用yum命令,非常简单和容易的安装Apach ...
随机推荐
- WPF TextBlock文本纵向排列
一.将TextBlock文本纵向排列输出有两种模式. 1.文字正常放置,只是纵向排列. 2.文字同样旋转90度,纵向排列. 二.详见下文实例 1.文本正常放置,纵向排列. (1)后台代码 string ...
- Explode TArray
function Explode(const Separator, S: string; Limit: Integer = 0): TArray;var SepLen : Integer; F, P ...
- 通过IL分析C#中的委托、事件、Func、Action、Predicate之间的区别与联系
先说一下个人理解的结论吧: delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类. delegate声明的变量与delegate声明的事件,并没有本质的区别,事件是在dele ...
- notepad++如何设置自动换行
视图(View)——>自动换行(Word wrap)
- 搭建本地MAVEN NEXUS 服务
下载 http://120.192.76.70/cache/www.sonatype.org/downloads/nexus-latest-bundle.zip?ich_args=232fba36ed ...
- POJ 1661 Help Jimmy LIS DP
http://poj.org/problem?id=1661 对板按高度排序后. dp[i][0]表示现在站在第i块板上,向左跑了,的状态,记录下时间和其他信息. O(n^2)LIS: 唯一的麻烦就是 ...
- openssl API网络通信
1.本文是在别人的基础上,经过测试,大体总结的.操作环境ubuntu12和ubuntu14 ****************************************************** ...
- C 语言 *** glibc detected *** free(): invalid next size (fast): 0x0000000000be1010 ***
. . . . . LZ 今天在写一个 Socket 程序的时候使用 malloc(3) 在堆上动态分配了一个结构体的空间,在使用完之后用 free(3) 函数释放空间的时候报 invalid nex ...
- (引用) unittest测试驱动之执行测试(三)
转载:http://www.wtoutiao.com/p/ydeoyY.html 在unittest的模块中,提供了TestRunner类来进行运行测试用例,在实际的应用中,经常使用的是TextTes ...
- spilt()的用法
split() 方法用于把一个字符串分割成字符串数组.<script type="text/javascript"> var str="How are you ...