使用Mingw编译Clang

来源:互联网 发布:qq业务在线下单源码 编辑:程序博客网 时间:2024/05/20 07:14

最近,看几篇文章说clang不错,心有所动,于是凭着GCC都有windows版的经验在网络找,结果呢一无所获。不过,在llvm的官网文档(http://clang.llvm.org/get_started.html )中看到 "On Unix-like Systems”,于是在电光闪耀间,我决定自己编译一个windows clang。

      第一步:安装环境

      按照http://clang.llvm.org/get_started.html 提示,首先下一个Mingw(www.mingw.org/) 本使用的mingw为mingw-get-inst-20120426.exeGCC 4.6.2 。注意一定要包全都下载好,检查方法你可以再次点击mingw-get-inst-20120426.exe或者更绝的方法把 MinGW\var\lib\mingw-get\Data 目录删除,其中 MingW是你的安装目录。其他您还需要下载python(http://www.python.org/ftp/python/),和 groff(http://sourceforge.net/projects/mingw/files/MSYS/Extension/groff/)下载其中的”groff-1.20.1-2-msys-1.0.13-ext.tar.lzmagroff-1.20.1-2-msys-1.0.13-bin.tar.lzma“ ,我把它们解压(你可能作用到 7zip www.7-zip.org/)到在 MinGW\msys 下 。整体安装完毕,启动MinGW Shell。进入MinGW\msys\1.0\home\Administrator(Administrator 为你的windoiws当前用户)。你也可以在其他目录中编译,如在C:\llvm的话,你得cd /C/llvm ,E盘,你得 /E/ ,如此类推,大小写不限。

第二步:签出 LLVM 代码:

svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm 。

第三步:签出 Clang:

目录切换到 llvm/tools ,llvm是源代码根目录 

签出 svn co http://llvm.org/svn/llvm-project/cfe/trunk clang  

第四步: 签出Compiler-RT

目录切换到  llvm/projects ,llvm是源代码根目录 
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
第五步:编译 LLVM 和 Clang:

这一步与  http://clang.llvm.org/get_started.html 提示不一样,如果按照提示做,它会编译成 debug,快接近十G,那天编译完吓我一跳,怎么会这么大。但我一想不对啊,我在Ubuntu中直接安装过clang的包,不到100M。后来,在它的官网找到资料,原来它有三种发布方式。一种是Debug+Asseerts,第二种是 Release+Asserts,第三种是 Release,这一种占的容量最小,貌似clang编译速度也快不少,就这一种了.

于是 使用./configure --prefix=/mingw --enable-optimized --disable-assertions  注意前面 ./ 与linux下执行文件类似

命令解释,--prefix=/mingw ,我试过了,这玩意儿一定要放在Mingw 根目录下,其他地方,clang会提示找不到头文件,如果您有其他方法,希望能分享。 --enable-optimized --disable-assertions会编译成Release版,这个体积小。但我不知道Release+Asserts做什么用,有知道的朋友一定要知会一声,谢谢了。

然后使用make 进行编译,最后使用make install 安装 到Mingw 下。你也可用make install DESTDIR=/local(/local会在MinGW\msys) 安装到其他目录,备份它们(如果备份在/local下的,备份完后,请记得删除,以免影响clang运行),以后省得重新编译,重装时直接覆盖到Mingw目录下。

     最后一步:测试是否安装成功,一定要检测,不然辛苦都白费了

写个hello.c

#include <stdio.h>

int main()

{

printf("Hello Clang!!");

return 0;

}


使用 clang -v hello.c 如果没有错误,表明编译安装成功。

原创粉丝点击