2008-10-05 15 views

risposta

18

Objective-C è compilato in codice nativo da GCC o LLVM [*]. Puoi compilare i programmi ObjC su Linux (il GCC generico supporta felicemente ObjC, sebbene usi una libreria runtime diversa da quella di Apple). Per un'API multipiattaforma simile a Cocoa (cioè derivata da Cocoa) che funzionerà felicemente su Linux e ti permetterà di portare un codice tra OS X e Linux, controlla GNUstep: http://www.gnustep.org

[*] In effetti, LLVM internamente compila l'Objective-C a una rappresentazione di bitcode interna, quindi a codice per la macchina di destinazione, quindi forse la risposta è "entrambi" ...

+1

Per chiarire, per 'LLVM' leggere 'GCC utilizzando il back-end LLVM'. LLVM su di esso non è un compilatore ma un generatore di codice macchina back-end. –

+0

@Mike buon chiarimento, grazie. –

+1

Apple sta lavorando su clang, un front-end di LLVM; GCC non viene utilizzato affatto in questo percorso. Tuttavia, non è ancora pronto per l'uso di produzione. – ephemient

2

Objective-C è una variante di C. Compilare codice nativo.

+0

Nota che questo consente di usare cose deliziosamente sporche come l'uso di codice C o C++ nudo nel bel mezzo dei tuoi programmi Objective-C! –

4

Sì, Objective-C compila il codice macchina.

I compilatori Objective-C esistono per Linux, ma Cocoa è una tecnologia solo per OS X. Ho sentito parlare di un sostituto aperto chiamato GNUstep, ma non ne so molto.

+1

Ero abituato a lavorare come sviluppatore GNUstep - ho ancora il flag di commit SVN ma in realtà non lo faccio in un attimo. È un buon sistema e fornisce una buona quantità di compatibilità con Cocoa, ma sarebbe fuorviante se pensassi che potresti semplicemente prendere un'app Mac arbitraria e digitare "make". –

7

È nativo.

C'è GNUstep quale implementazione Open Source della specifica NeXT OpenStep scritta in Objective-C. La loro implementazione dell'API Cocoa non è una corrispondenza diretta, quindi una compilazione diretta senza il porting non è possibile.

+1

Per dare un buon aggiornamento 7 anni dopo; GNUStep fa un ottimo lavoro nel mirroring di OpenStep/Cocoa in questo momento. – Qix