在终端clang编译oc代码

2017-03-08  本文已影响117人  大美象

Xcode 的默认编译器是 clang,编译器有两个职责:把 Objective-C 代码转化成低级代码,以及对代码做分析,确保代码中没有任何明显的错误。

clang -ccc-print-phases helloword.m

0: input, "helloword.m", objective-c
1: preprocessor, {0}, objective-c-cpp-output
2: compiler, {1}, ir
3: backend, {2}, assembler
4: assembler, {3}, object
5: linker, {4}, image
6: bind-arch, "x86_64", {5}, image

编译器工作的阶段:

#import <Foundation/Foundation.h>

预处理器对这行代码的处理是用 Foundation.h 文件中的内容去替换这行代码,如果 Foundation.h 中也使用了类似的宏引入,则会按照同样的处理方式用各个宏对应的真正代码进行逐级替代。

新建文件 helloword.txt

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    @autoreleasepool
    {
        NSLog(@"Hello, OC!");
    }
    
    return 0;
}

在终端输入命令行

clang -fobjc-arc -framework Foundation HelloWord.m -o HelloWord

就生成了可执行文件,在终端输入执行代码

 ./HelloWord

或者双击可执行文件即可执行代码

[原文] (https://objccn.io/issue-6-2/)

上一篇 下一篇

猜你喜欢

热点阅读