2009-10-11 28 views
38

Các readme kèm với 3.2.1 Xcode mới trong tuần này cho biết như sau:Xcode 3.2.1 GCC Clang và LLVM sáng tỏ

  • tĩnh phân tích mã được tích hợp đầy đủ trong Xcode IDE thông qua xây dựng và phân tích lựa chọn trong trình đơn Xây dựng hoặc thông qua cài đặt bản dựng tùy chỉnh
  • GCC 4.2 là trình biên dịch hệ thống mặc định cho 10.6 SDK
  • Trình biên dịch LLVM tùy chọn được bao gồm bằng hai giao diện người dùng khác nhau - trình biên dịch Clang là trình phân tích cú pháp hàng đầu cung cấp đáng kể cải thiện thời gian biên dịch. Để có khả năng tương thích tối đa, trình biên dịch LLVM của GCC sử dụng back-end LLVM với trình phân tích cú pháp GCC 4.2.
  • Trình biên dịch Clang-LLVM 1.0 tùy chọn mới sử dụng trình phân tích cú pháp đầu cuối Clang nhanh hơn nhiều cùng với trình biên dịch ngược dòng LLVM để biên dịch nhanh và mã thực thi nhanh. Nhiều dự án sẽ được hưởng lợi từ sự kết hợp trình biên dịch này, mặc dù GCC 4.2 vẫn là hệ thống mặc định. Trình biên dịch Clang-LLVM 1.0 sẽ quay trở lại sử dụng LLVM-GCC 4.2 khi nó gặp mã C++.

Công ty chúng tôi có các dự án hiện có thuần khiết C, Mục tiêu-C và Mục tiêu-C++ cho máy tính để bàn và iphone. Ai đó có thể tóm tắt ở mức độ cao sự khác biệt giữa LLVM, GCC, CLANG, CLANG-LLVM, WordFoo et. al. và giải thích chúng là gì và khi nào chúng ta nên sử dụng chúng và làm gì? Thật tuyệt khi có liên kết đến một giải thích chi tiết hơn, nhưng tôi thực sự chỉ tìm kiếm một cái nhìn tổng quan cấp cao.

Trả lời

53

Tóm lại:

Trình biên dịch cơ bản được chia thành hai phần. Một là front-end chứa phân tích cú pháp và phân tích ngữ nghĩa cho ngôn ngữ lập trình. Mặt trước tạo ra một số loại biểu diễn trung gian của mã của bạn. Sau đó, có các phụ trợ mà mất những thứ front-end sản xuất, tối ưu hóa nó, và cuối cùng tạo ra mã lắp ráp.

  • GCC: trình biên dịch nổi tiếng, bao gồm cả phía trước đầu cho các ngôn ngữ khác nhau và back-đầu cho nhiều kiến ​​trúc vi xử lý
  • LLVM: một tập hợp các back-đầu cho các kiến ​​trúc khác nhau (và các công cụ cấp thấp khác)
  • clang: giao diện người dùng mới cho C, Objective-C và C++; sử dụng LLVM back-end. Bạn sẽ nhận được nhiều lỗi và cảnh báo dễ đọc hơn từ trình biên dịch của bạn và thời gian biên dịch ngắn hơn. Bạn cũng có thể gặp phải sự không tương thích hoặc lỗi; clang là một dự án rất trẻ.
  • LLVM-GCC: Giao diện người dùng của GCC với back-end của LLVM. LLVM của back-end là nhanh hơn GCC của.

Hỗ trợ C++ của clang (Objective-) không được hoàn thành để nó gọi llvm-gcc khi gặp tệp nguồn C++. Nó cũng chứa bộ phân tích tĩnh hiện được tích hợp vào Xcode. Một số người nói rằng back-end của LLVM tạo ra mã tốt hơn GCC nhưng số dặm của bạn có thể thay đổi. LLVM cũng hỗ trợ tối ưu hóa thời gian liên kết (bạn có thể bật trong cài đặt dự án của Xcode). Họ có thể tạo mã nhanh hơn.

Apple muốn thay thế GCC bằng tiếng kêu trong tương lai vì họ có chính sách chống lại mã được cấp phép GPLv3 (GCC 4.2 là phiên bản cuối cùng được cấp phép theo GPLv2).

+0

Vâng, tiếng kêu thậm chí còn hiển thị cột lỗi, không chỉ dòng. –

+0

Câu trả lời tuyệt vời: Khi tôi * mã hóa * trong Xcode và tôi nhận được cảnh báo * vàng * là tiếng kêu? Nếu tôi gặp lỗi * đỏ * thì đó là gì? Nếu tôi gặp lỗi sau khi chạy tức là trong * thời gian chạy * là LLVM đang cho tôi lỗi? – Honey

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