Objective-C用Clang编译

为什么本文选择用Clang来编译,而不用GCC呢。因为要跟随顺应苹果的推进潮流,最新的xcode编译器选项也使用了Clang来完成编译。至于苹果为什么放弃GCC而改用Clang,感兴趣的可以搜一搜。

xcode编译器选项截图:

pic01

上图可以看到一个LLVM,什么是LLVM?

LLVM,是一种编译器的基础架构,以C++写成的程序,是众多编译工具及低级工具技术的统称。它利用虚拟技术,创造出可以在代码编译时期,链接时期,运行时期以及“闲置时期”的最优化。它最早是以C/C++为实现对象,目前它支持了包括ActionScript、Objective-C、Swift、Python、Ruby等编程语言。

Clang,它是一个C++编写,以LLVM为基础的新编译器,同时支持C、Objective-C以及C++。Clang的目的用以替换GCC系统底下的C/Objective-C编译器,在当代的系统,他较为容易与集成开发环境(IDE)集成,而且对于线程有更好的支持。GCC底下Objective-C的开发已经停滞。

Clang对源程序进行词法分析和语义分析,并将分析结果转换为Abstract Syntax Tree(抽象语法树),最后使用LLVM作为后端代码的生成器。


了解这么多后,开始用Clang来编译Objective-C代码吧!

新建一个objective-c的objc_code.m文件,内容:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"Clang Compiler!");
    }

    return 0;
}

编译指令:clang -fobjc-arc -framework Foundation objc_code.m -o objc_code

编译完成生成objc_code的可以执行的文件。

执行指令:./objc_code

终端输出:2016-07-21 14:34:23.814 objc_code[15609:4585982] Clang Compiler!

上面使用到了clang的命令,需要注意:

-fobjc-arc 表示编译器需要支持ARC特性;
-framework Foundation 表示引用Foundation框架;
objc_code.m 为需要进行编译的源代码文件;
-o objc_code 表示输出的可执行文件的文件名;

所以有了clang编译指令后,我们就可以愉快的编译objective-c的代码。


如果对clang编译器感兴趣,对它的命令操作感兴趣,这个指令应该是一个很好的切入点:clang --help

文章来自 http://skymonkey.cn/

高能广告区

暂无广告哦=^^=。继续看看其它文章吧!