Building LLVM on Ubuntu 12.04 32bit and Ubuntu 13.04 64bit ——LLVM安装编译手记

来源:互联网 发布:淘宝win10 激活靠谱不 编辑:程序博客网 时间:2024/05/16 23:54

     最近因为项目要使用到LLVM 进行开发,所以倒腾了一下LLVM 在ubuntu12.04下的的编译安装。

  首先,依据官网(http://llvm.org/docs/GettingStarted.html)上提供的Getting Started with LLVM手册,首先下载并安装了以下软件:

PackageVersionNotesGNU Make3.79, 3.79.1Makefile/build processorGCC3.4.2C/C++ compiler1TeXinfo4.5For building the CFESVN>=1.3Subversion access to LLVM2python>=2.5Automated test suite3GNU M41.4Macro processor for configuration4GNU Autoconf2.60Configuration script builder4GNU Automake1.9.6aclocal macro generator4libtool1.5.22Shared library manager4zlib>=1.2.3.4Compression library5    其中GNU Make,GCC在ubuntu系统中已经自带了,只需编译安装其他几个软件即可。

    在安装TeXinfo时,发现需要软件ncurses的支持,所以又下载了该软件,ncurses-5.9。(安装ucurses需要使用g++,如果没有安装g++,还需安装g++ 使用命令 sudo apt-get install build-essential)。

    接下来按照顺序安装了各个软件(除了GNU Autoconf 要先于GNU Automake安装外,其他顺序其实随意即可。同时,注意svn安装过程中需要按提示下载几个文件,具体忘记了,安装时按提示操作即可。安装时使用命令 %sudo apt-get install subversion %sudo apt-get install libapache2-svn )

    

    然后依照官网的顺序,依次执行 Getting Started: Building and Running Clang步骤中的1到6。步骤1到5都完美执行,当步骤6创建好makefile文件,进行make时,发现编译时间相当之久,笔者使用的是ubuntu虚拟机编译,最开始编译了两个小时后(确实是两个小时),出现了错误,google错误原因,竟然是内存不够用,于是将虚拟机的内存增加到1.5G(唉,机子搓,只能分这么多了)。继续编译!

    蛋疼了等了两个多小时,发现还是没有编译完,发现虚拟机似乎都已经卡死了!实在是忍受不了这么漫长的编译时间,于是我把虚拟机拷到另外一台配置较好的机子上,分配了4G内存给虚拟机,继续编译!但是还是很久没有编译完~!(泪奔啊~~~~)。


   于是,我决定在真实物理机上编译LLVM。笔者的机子上装的ubuntu版本是 13.04 64bit 。没装之前估计LLVM可能对13.04版本和64bit系统的兼容性不太好,但是还是抱着试一试的心态安装了,因为身边实在没有ubuntu12.04的真实机!

    然后按照上述方法又重新在 64bit ubuntu13.04上编译LLVM。不出所料,果然有问题,中间链接的时候有个库不能使用,具体不表,因为我也没有解决这个问题。。。于是又开始搜索 LLVM 在64bit系统上的编译问题,(官方cmake 方式链接 http://llvm.org/docs/CMake.html


在llvm的文件目录下创建build目录

% cd ../build

% cmake ../llvm


      使用cmake方式果然比llvm编译快 ,但还是出现了问题,而且没有出错信息!!!最后直接蹦出个error2 就编译中止了!正当万念俱灰之刻。搜到一个帖子说使用官方方式编译使用的llvm版本是开发版。而这个版本还不支持ubuntu13.04,而llvm3.3是支持的!可以下载官方的源码编译。原话如下:

"it seems that by doing the build from the source code that was downloaded using SVN, it was downloading the 3.4 version, which is still in the development stage and not necessarily being supported by Ubuntu 13.04 yet.
I simply just downloaded the 3.3 version files from the LLVM site and did the build with that and it worked!”

       到LLVM官网下载3.3的源码(需要下载llvm,clang,compile-rt),将clang源码解压到 /llvm/tools目录下,compile-rt源码解压到/llvm/projects目录下,同时注意修改文件夹的名字,去掉版本号,即最后clang源码位于 /llvm/tools/clang目录下,compile-rt位于 、llvm/projects/compile-rt目录下

在llvm同级目录下创建build目录,然后编译:

% mkdir build

% cd build

% ../llvm/configure

% make

% make install

       果然成功了!(注意,3.3的源码在ubuntu13.04上使用cmake是无法编译通过的,这个bug已经报告给LLVM,但貌似还没有修改)


最后,我又尝试在虚拟机ubuntu12.04 32 bit里面使用cmake编译LLVM,最终也成功了(不过很耗时)!

总之,经过三天的蛋疼之旅,LLVM终于算是编译成功了!


====================================================================================================================

Tips:
      1 如果使用官方的方式用 svn 获取源码,下载的将是最新的开发版本代码,而这个代码是对ubuntu 13.04的支持性不好,所以如果想在ubuntu 13.04 上安装使用,则推荐下载llvm 3.3 release 版源码;

      2 如果你在ubuntu虚拟机里面编译安装llvm。推荐使用cmake方式编译源代码。使用gcc/llvm编译安装速度相当慢,而且有可能你的CPU本身并不支持真正的虚拟机技术,编译很难成功。

     3 Ubuntu 13.04 64bit 系统下,使用cmake方式编译有问题,无法成功,目前这个问题已经报告为bug,尚未解决~~