CentOS 6.4 编译安装LLVM3.3,Clang和Libc++

本来最新版的已经是3.4了,不过,之前编译过一次,失败了,所以这次先用3.3吧

另外这是转载的文章

http://www.cnblogs.com/codemood/p/3142848.html

?

LLVM的最新版本3.3终于在6月17日发布了,按之前的计划6月5日就应该发布了,不过毕竟没有太晚,赶在VS2013 preview(6月26日微软Build大会)之前出来了。加上之前gcc4.8.1在5月底6月初发布,当今最优秀的三大C++编译器都在这个月发布重要更新,这个6月份真是C++的好日子啊!

LLVM之前就已经宣布做到C++11 Feature Complete了,3.3应该是第一个稳定版,之前gcc4.8.1也同样是全面支持C++11,这篇文章介绍了如何在CentOS上编译安装最新的gcc,VS一直是落后很多的,不过还是很期待VS2013 preview中能增加多少C++11特性。

LLVM3.3提供了非常丰富的Pre-built Binaries:包括Ubuntu13.04,Ubuntu12.04和Ubuntu10.04,还有Debian6、FreeBSD9和Fedora18,当然还有Apple自己的Mac OS X了。只可惜没有给CentOS也提供预编译版本,只能自己编译安装了。

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

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

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

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://llvm.org/releases/download.html#3.3这边下载最新的版本。如果从SVN下载代码的话,已经是3.4的开发版本了,如果需要使用稳定版本,推荐自己下载3.3的代码包,需要下载5个文件:

LLVM source code

Clang source code

Clang Tools Extra source code

Compiler RT source code

LibC++ source code

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

llvm-3.3.src

cfe-3.3.src

clang-tools-extra-3.3.src

compiler-rt-3.3.src

libcxx-3.3.src

然后按下面的步骤组织:

mv cfe-3.3.src clang
mv clang/ llvm-3.3.src/tools/

?

mv clang-tools-extra-3.3.src extra
mv extra/ llvm-3.3.src/tools/clang/

?

mv compiler-rt-3.3.src compiler-rt
mv compiler-rt llvm-3.3.src/projects/

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

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

mkdir build-3.3
				
cd build-3.3
			

然后configure:

../llvm-3.3.src/configure --enable-optimized --enable-targets=host-only

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

然后make:

make -j4

尽量把几个核都用上。

然后make install:

sudo
				make
				install
			

用clang++ -v查看下:

clang version 3.3 (tags/RELEASE_33/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
			

此时clang就可以正常使用了,clang默认用的是C++库gcc的libstdc++。clang用法和gcc类似,如果要使用C++11的话:

clang++ -std=c++11 [input]

如果想用LLVM自己的libc++,就需要以下步骤(有点小麻烦):

进入之前解压出来的libcxx-3.3.src:

cd libcxx-3.3.src/lib
./buildit

然后在libcxx-3.3.src/lib下面就可以看到libc++.so.1.0文件,这就是libc++的动态库。

按照下面的步骤把libc++.so.1.0放到/usr/lib下,并创建几个链接:

sudo
				cp ./libc++.so.1.0 /usr/lib
cd /usr/lib
sudo
				ln -sf /usr/lib/libc++.so.1.0 libc++.so
sudo
				ln -sf /usr/lib/libc++.so.1.0 libc++.so.1
			

然后把libcxx-3.3.src/include目录拷贝到/usr/include/c++/v1(这个地址是clang默认查找的目录,如果目录不存在则自己创建):

cp -r libcxx-3.3.src/include/ /usr/include/c++/v1

按理说,这样以后,就可以了,使用libc++的方式如下:

clang++ -stdlib=libc++ -std=c++11 [input]

但是我这边编译的时候,提示找不到头文件,需要手动加上-I/usr/include/c++/v1/:

clang++ -stdlib=libc++ -std=c++11 -I/usr/include/c++/v1/ [input]

运行的时候,也会提示链接错误:error while loading shared libraries: libc++.so.1: cannot open shared object file: No such file or directory。

解决办法是在~/.basrch中加入下面的环境变量:

export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib

重启个shell就可以了正常运行了,上面这些找不到头文件和链接错误都是因为使用libc++的原因,如果使用默认的libstdc++就没有这些问题

OK,尽管使用起来有点小麻烦,不过写个makefile就不用每次都敲那么长的命令了,Enjoy!

CentOS 6.4 编译安装LLVM3.3,Clang和Libc++

时间: 2024-11-05 23:26:15

CentOS 6.4 编译安装LLVM3.3,Clang和Libc++的相关文章

CentOS 6上编译安装AMP详解

在CentOS 6上编译安装AMP     A:Apache(httpd)     M:MySQL or MariaDB     P:php 目录: 一.准备工作 二.编译安装Apache(httpd) 三.编译安装MariaDB 四.编译安装PHP 编译安装AMP的优点: 根据生产环境灵活定制程序 优化编译参数,提高性能 解决不必要的软件依赖 一.准备工作 1.需要的软件包及版本号: httpd-2.4.27(apr-1.5.2+ apr-util-1.5.4) + MariaDB-5.5.5

httpd2.4在CentOS 6 上编译安装

httpd-2.4 新特性: 1.MPM支持运行为DSO机制,以模块形式按需加载 2.Event MPM生产环境可用 3.支持异步读写机制 4.支持每模块每目录的日志级别定义 5.每请求相关专用配置 6.增强版表达式分析器 7.毫秒级连接时长 8.基于FQDN的虚拟机不在需要NameVirtualHost指令 9.新指令,AllowOverrideList 10.支持用户自定义变量使用 11.更低的内存消耗 httpd-2.4 新模块:     1.mod_proxy_fcgi   支持php 

CentOS 6.5 编译安装httpd2.4安装

CentOS 6.5 编译安装 包下载地址:http://pan.baidu.com/s/1miHrZdQ 密码:p6ny 由于httpd依赖于apr-1.4,apr-util-1.4,所以得安装1.4及以上版本. 首先安装apr和apr-util tar xf apr-1.5.0.tar.bz2 ./configure --prefix=/usr/local/apr make && make install tar xf apr-util-1.5.2.tar.bz2 ./configur

Centos 7.0 编译安装LAMP(Linxu+apache+mysql+php)之源码安装Mysql (二)

mysql 简介: MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,这样就增加了速度并提高了灵活性.目前其属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件.MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言. 安装环境: 系统: centos 7.0 最小化安装 软件

CentOS 6.5 编译安装 gcc-4.9.1

1.环境在标题中 2.gcc-4.9.1 的编译安装需要系统原来就有一套gcc/g++ 3.使用yum 安装 gcc/g++ 1 yum install gcc 2 yum install gcc-c++ 4.下载gcc-4.9.1 通过WinSCP 上传服务器 5.解压 1 tar xvf gcc-4.9.1.tar.gz 6.下载gcc编译的依赖项,这一步,会启动自动下载,但是在我的机器上下载完一个就停止了,尝试了很多次都这样,不知是不是下载服务器不稳定,还是我本地网络的原因.后来我就改用手

Centos 7.0 编译安装LNMP(Linxu+nginx+mysql+php)之源码安装nginx (一)

nginx简介:       Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日. 其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. Nginx是一款轻量级的Web 服务器

CentOS源码编译安装MySQL 5.5.15

CentOS源码编译安装MySQL 5.5.15 文章目录 [隐藏] 安装编译工具 下载源码 安装cmake和bison 编译安装MySQL 一些相关设置 安装编译工具 yum install gcc gcc-c++ yum install ncurses-devel 下载源码 mkdir -p /tmp cd /tmp wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.15.tar.gz/from/http://mysql.

centos 7 min 编译安装php5.6+nginx1.7.5 笔记

centos 7 min 编译安装php5.6+nginx1.7.5 笔记 1.安装mysql请参照 centos 7 min 编译安装mysql5.6.20 笔记 2.编译安装php5.6+nginx1.7.5 2.1.安装php5.6.0 首先添加依赖应用 yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-dev

CentOS 6.5 编译安装 gcc-4.8.0(转)

CentOS 6.5 编译安装 gcc-4.8.0 1.首先下载源代码 wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2 2.解压 tar -jxvf  gcc-4.8.0.tar.bz2 3.下载编译所需的依赖项 cd gcc-4.8.0 ./contrib/download_prerequisites cd .. 4.建立编译输出目录 mkdir gcc-build-4.8.0 5.进入此目录,执行以下命令,生成makef