LLVM折腾记(1)

这两天前看了一些关于LLVM的资料,比如《程序员》上的文章Dr. Dobbs上的 The Design of LLVM。之前还听说LLVM编译速度快、生成代码体积小效率高、架构优秀,连GCC都赶不上了,于是就开始琢磨着折腾折腾。
首先是下载编译最新的LLVM。我们的编译环境比较老,比如libstdc++的版本差了一点,最新的LLVM(包括3.1和3.0)都编译不起来(除了Debug+Assert版本,没想明白)。由于编译环境是公共的,自己fork一份出来太费劲,于是就将就用Debug版本编一个文件试试。
接下来是一般折腾找makefile里改编译器的地方,在一个已经用编译好的代码环境下通过touch一个源文件来一次只编一个,省的一下子把所有代码塞给clang/llvm遇上问题太多搞不定。预料上的问题很快就碰上了:代码里用了GCC的方言或者不符合标准的地方。clang(LLVM的C/C++/Objective-C前端)的主页上给出了目前不兼容GCC的列表:http://clang.llvm.org/compatibility.htm,大部分兼容性问题应该可以在这里找到答案。
第一个碰上的问题是关于模板类继承的:
http://clang.llvm.org/compatibility.html#dep_lookup_bases
改了点代码就编译通过了,算是完成了第一步。不过显然不能一直用Debug版本的下去,速度只有GCC的一半多一些,丧失了LLVM的一大优势。明天的任务就是fork出新的能够运行Release版本的编译环境。

Leave a comment