Objective-C是否编译为本机代码或字节代码?

时间:2008-10-05 20:35:41

标签: objective-c linux cocoa macos

在OS X上,Objective-C是否编译为本机代码或字节代码?

可以在Linux上编译Objective-C程序吗?

4 个答案:

答案 0 :(得分:19)

Objective-C由GCC或LLVM [*]编译为本机代码。您可以在Linux上编译ObjC程序(通用GCC将很乐意支持ObjC,尽管它使用的运行时库与Apple中的任何一个不同)。对于类似于Cocoa的跨平台API(即从Cocoa派生而来),它可以在Linux上工作,并允许您在OS X和Linux之间移植一些代码,请查看GNUstep:http://www.gnustep.org

[*]实际上,LLVM在内部将Objective-C编译为内部bitcode表示,然后编译目标机器,所以答案可能是“两者”...

答案 1 :(得分:7)

它是原生的。

GNUstep是用Objective-C编写的NeXT OpenStep规范的开源实现。它们对Cocoa API的实现不是直接匹配,因此无法直接编译而无需移植。

答案 2 :(得分:4)

是的,Objective-C编译成机器代码。

Objective-C编译器适用于Linux,但Cocoa是一种仅支持OS X的技术。我听说过一个名为GNUstep的开放式替代品,但对此并不了解。

答案 3 :(得分:2)

Objective-C是C的变体。它编译为本机代码。