这是一篇老笔记,在整理之前的博客发现了。想起当年上学时,学习 clang 的经历。
问题描述
笔者在安装LLVM和clang时遇到一下奇葩的问题,搞的人极为头大。先说说笔者的环境吧。
- ubuntu12.04 64位。用这个主要是笔者之前做的一些工作需要在这个环境上部署。这也是笔者这一段时间来极为头疼的事情。
- gcc-4.6.3/g -4.63。这个是系统默认的,这样导致了一个奇怪的问题。由于特殊的环境,便造成了各种奇奇怪怪的问题,虽然这些问题以后会以同样的方式重现,但是,也不失为以后遇到问题的一个思考方向。
安装cmake
笔者的环境中的cmake版本为2.8.7而LLVM需要的版本最低要求为2.8.12.2。由于apt-get安装的只能是2.8.7的了,无奈只能去官网上重新下载安装包了。官网给出的是最新版本的而且是可执行的文件,捣鼓了半天,在网上搜了半天都是啥./bootstrap
啥的,可是这个压缩包中是没有这个文件的。只好下源码,通过源码安装。执行了git clone git://cmake.org/cmake.git
克隆下来的是当时最新版本的3.4,为了报销起见,笔者还是觉得安装2.8.12.2版本的。那么问题就来了,怎样获得2.8.12.2版本的代码呢?笔者是这样干的:
git checkout git checkout -b 2.8.12.2 2.8.12.2 #钱一个2.8.12.2是笔者新建的一分支,后一个是tag也就是需要的版本号。
#这样就相当于,从指定的tag新建了一个分支,这样就可以获取指定tag的代码了。
$:sudo ./configure
$:sudo make
$:sudo make install
这样就安装好了合适的cmake了。
升级gcc和g
原本以为这样就好了,事实上是笔者想的太多了。g 从4.7才开始支持C 11,而笔者所装LLVM版本为3.7已经有一些C 11特性了,自带g 4.6.3已经不能对其进行编译了。路有三条:
- 直接
sudo apt-get install llvm clang
一条命令搞定,可是安装的LLVM版本比较老,是3.0版本的。 - 和第一条路类似,降低LLVM版本,这就为难了——降到哪个版本呢?
- 笔者选择了第三条路,升级gcc/g ,通过笔者走的是保守路线,升级到4.8也不高也不低。升级过程还是比较顺利的;,添加新的源,直接apt-get安装,修改gcc和g 链接。
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.8
sudo apt-get install g -4.8
cd /usr/bin
sudo rm g
sudo ln -s g -4.8 g
sudo ln -s gcc-4.8 g
后两步是必须的,不然默认编译器还是之前的4.6版本的。
安装LLVM和clang
总算把各种路障清干净了,接下来就更好办了,直接按照官方文档一步一步输命令安装即可。不再赘述,详情见参考资料。
参考资料
[1]: http://www.oschina.net/question/1030451_105857#tags_nav
[2]: http://blog.chinaunix.net/uid-23381466-id-3475968.html
[3]: http://clang.llvm.org/get_started.html