2008-10-05 42 views

Trả lời

18

Mục tiêu-C được biên dịch thành mã gốc bằng GCC hoặc LLVM [*]. Bạn có thể biên dịch các chương trình ObjC trên Linux (GCC chung sẽ vui vẻ hỗ trợ ObjC, mặc dù nó sử dụng một thư viện thời gian chạy khác với một trong những thư viện của Apple). Đối với một cross-nền tảng API tương tự như Cocoa (tức là bắt nguồn từ Cocoa) mà hạnh phúc sẽ làm việc trên Linux và cho phép bạn cổng một số mã giữa OS X và Linux, hãy kiểm tra GNUstep: http://www.gnustep.org

[*] Thực tế, LLVM nội bộ biên dịch Objective-C thành một biểu diễn bitcode nội bộ, sau đó mã hóa cho máy mục tiêu, vì vậy có lẽ câu trả lời là "cả hai"…

+1

Để làm rõ, cho 'LLVM' đọc 'GCC bằng cách sử dụng LLVM back-end'. LLVM trên riêng của nó không phải là một trình biên dịch, nhưng một máy phát điện mã-máy back-end. –

+0

@ Giống như làm rõ tốt, cảm ơn. –

+1

Apple đang làm việc trên clang, một front-end để LLVM; GCC không được sử dụng ở tất cả trong con đường này. Nó chưa sẵn sàng cho việc sử dụng sản xuất. – ephemient

2

Mục tiêu-C là một biến thể của C. Nó biên dịch thành mã gốc.

+0

Lưu ý rằng điều này cho phép những điều bẩn thỉu như sử dụng mã khỏa thân C hoặc C++ ở giữa các chương trình Mục tiêu-C của bạn! –

4

Có, Objective-C biên dịch thành mã máy.

Trình biên dịch Objective-C tồn tại cho Linux, nhưng Cocoa là công nghệ chỉ dành cho OS X. Tôi đã nghe nói về một thay thế mở được gọi là GNUstep, nhưng không biết nhiều về nó.

+1

Tôi từng làm việc như một nhà phát triển GNUstep - vẫn còn có cờ cam kết SVN nhưng chưa thực sự làm như vậy trong một thời gian. Đó là một hệ thống tốt và cung cấp một số lượng tốt về khả năng tương thích nguồn với Cocoa, nhưng bạn sẽ bị nhầm lẫn nếu bạn nghĩ rằng bạn chỉ có thể lấy một ứng dụng Mac tùy ý và gõ 'make'. –

7

Đó là nguồn gốc.

GNUstep thực hiện Mã nguồn mở của đặc tả OpenStep NeXT được viết trong Mục tiêu-C. Việc triển khai API Cocoa không phải là một kết hợp trực tiếp nên việc biên dịch trực tiếp mà không cần chuyển đổi là không thể.

+1

Để cập nhật tốt đẹp 7 năm sau đó; GNUStep thực hiện một công việc khá tốt khi phản ánh OpenStep/Cocoa tại thời điểm này. – Qix

Các vấn đề liên quan