Android|编译器clang的使用-编译HelloWold程序


源于在编译Android源码的时候时常看到用到了LLVM编译器,其中针对C语言的是clang,相当于GNU中的gcc。深表好奇,这里试用了解一下。

【Android|编译器clang的使用-编译HelloWold程序】1.安装
执行sudo apt-get install clang就安装了。同样这里Ubuntu 12.04 安装clang 3.3也有离线安装方法。
kangear@ubuntu:/tmp$ clang -v
Ubuntu clang version 3.0-6ubuntu3 (tags/RELEASE_30/final) (based on LLVM 3.0)
Target: i386-pc-linux-gnu
Thread model: posix
kangear@ubuntu:/tmp$

2.编译HelloWold
写一个HelloWorld的C程序。如下hello.c:
#include
int main()
{
printf("Hello World!\n");
return 0;
}

编译clang hello.c生成a.out,运行结果正常。

3.clang的排错特性
clang的最大的特点是它的排错比较人性化相比gcc。这里测试一下,将上述代码中return 0后的; 去掉。重新编译提示如下,真的相当智能。
kangear@ubuntu:/tmp$ clang hello.c
hello.c:5:10: error: expected '; ' after return statement
return 0
^
;
1 error generated.
kangear@ubuntu:/tmp$

不愧是智能手机鼻祖家做的编译器,相当人性化,直接提示出了缺少内容。

写在最后
通过测试发现4.2.2版本的C程序默认使用的还是GCC,内核也是GCC。应该通过其它配置可以使用CLANG,不过这里暂时不深究了。Wiki上显示内核使用CLANG编译了,但是大家都还没有这么做,说明还是会有一些问题,应用程序使用clang应该是没有问题的。

    推荐阅读