Clang / LLVM đã sẵn sàng cho thời gian chính chưa? [đóng cửa]


9

Clang có thể được sử dụng thay vì gcc? Kinh nghiệm của bạn về điều đó là gì? Có nhược điểm gì chưa?

Hiệu suất biên dịch rất tốt hơn gcc nhưng về hiệu suất của mã được tạo khi thực thi nó?

Có các công cụ tốt như front-end (IDE) để chạy trên Linux hoặc Windows không?

EDIT: Ý tôi là trình biên dịch C. C ++ vẫn chưa tốt lắm.

Câu trả lời:


9

Cập nhật: Bây giờ (2013) Clang đã sẵn sàng cho thời gian chính và được sử dụng bởi một số công ty như Google. Tuy nhiên nó không hoàn toàn có thể sử dụng được trên Windows, công việc trên nền tảng này là một "công việc đang tiến triển". LLVM / Clang hiện là trình biên dịch mặc định trên MacOSX / XCode nhưng nó không hoàn toàn giống với các bản phát hành LLVM vì vậy hãy cẩn thận với những khác biệt nhỏ (chủ yếu là khác biệt về số phiên bản).


Cũng theo danh sách gửi thư clang dev , gần đây phiên bản trung kế đã được xây dựng thành công:

  • kernel linux (bản sửa đổi gần đây)
  • Qt (rõ ràng cũng có quá trình xây dựng đặc biệt)
  • Chromium (bản sửa đổi gần đây)

Vì vậy, tôi muốn nói rằng phiên bản sắp tới (2.9) có thể là một trình biên dịch "sẵn sàng cho thời gian chính".

Tuy nhiên, nếu dự án của bạn có kế hoạch và ngân sách, có lẽ không nên thử trình biên dịch chưa được thử nghiệm nhiều. Nếu bạn được phép thử nghiệm và cung cấp phản hồi cho cộng đồng nhà phát triển Clang, thì hãy tham gia, đó là chiến thắng cho mọi người. Nếu không, có lẽ bạn nên sử dụng một trình biên dịch trưởng thành và được sử dụng nhiều như gcc (trong các phiên bản gần đây) để có "mặt bằng ổn định" để dựa vào khi làm việc với dự án của bạn.


Chỉ để bổ sung, nó không phải là một dự án chuyên nghiệp ... tuy nhiên, nó gần như là một dự án thời gian làm việc 20%.
Maniero

Tôi đã cố gắng kêu vang trong một dự án đa nền tảng không chuyên nghiệp. Thực tế đó là những gì tôi đang cố gắng ngay bây giờ.
Klaim

Cảm ơn. Mối quan tâm của tôi là về tương lai của dự án. Tôi sẽ bắt đầu như một thử nghiệm nhưng tôi muốn làm nhiều hơn thế.
Maniero

Nếu đó là một dự án dài hạn, nó có thể được hưởng lợi từ CLang một khi tính năng ổn định, chính xác, tối ưu hóa và đầy đủ C ++ 0x (nếu bạn sử dụng c ++). Bởi vì mục tiêu của nó là trở thành trình biên dịch nhanh hơn ngoài kia và rõ ràng, nó đã có. Và nó quan trọng.
Klaim

1
Clang cũng đang xây dựng iOS, Xcode và khá nhiều thứ mà Apple đang vận chuyển.
Mike Weller

8

Chà, nó chắc chắn đã sẵn sàng cho thời nguyên thủy trên Mac OS X, vì nhiều ứng dụng Mac OS X được biên dịch bằng tiếng kêu. Nhưng ngay cả trên các nền tảng khác, hỗ trợ C khá vững chắc và nhóm đã có những bước tiến lớn với hỗ trợ C ++.

Nói chung, clang biên dịch mã nhanh hơn gcc, nhưng gcc tạo mã được tối ưu hóa tốt hơn. (Có những trường hợp cạnh không đúng, nhưng nói chung, đó là tình trạng hiện tại.)


Tôi thấy vấn đề tương tự, Clang quá gắn liền với MacOS / BSD.
Maniero

Tôi đã thử CLang trên Windows 7 và nó hoạt động chính xác. Tôi cũng đã thử nó trên Ubuntu. Tôi nghĩ rằng thông tin của bạn không được cập nhật, nhưng đó là logic vì rất nhiều nỗ lực sửa chữa đa nền tảng đã được đưa vào những tháng trước. Vì vậy, có lẽ nó sẽ không quá trung tâm khi phiên bản tiếp theo được phát hành.
Klaim

1
@Klaim: Tôi không nói về Clang per se , mà là toàn bộ hệ sinh thái. Tôi đã thử một số thứ trên các vấn đề trắng của Win7, nhưng chỉ là trình biên dịch trên cli.
Maniero

Tôi đã thấy rằng Clang đã tạo ra một nhị phân nhanh hơn GCC cho dự án của tôi. Ít nhất nó cũng đáng để thử.
Kendall Hopkins

Ngoài ra, là trình biên dịch mặc định bây giờ cho iOS.
mamcx

3

Bạn không nên thực sự phụ thuộc vào một trình biên dịch cụ thể trừ khi bạn thực sự cần. Vì vậy, bạn sẽ có thể thay đổi trình biên dịch tại Makefile hoặc một cái gì đó và mọi thứ sẽ hoạt động tốt.

Ở đây tôi sử dụng chủ yếu tiếng kêu cho các dự án đồ chơi của mình, vì nó nhanh hơn và quan trọng hơn nhiều: các thông báo lỗi của nó rất rõ ràng. Nhưng khi tôi cần sử dụng gdb, tôi biên dịch bằng gcc và -ggdb. Vì vậy, clang chưa hoàn thành tính năng và không thể là trình biên dịch duy nhất của tôi.

(BTW: Tôi đang sử dụng x86 gentoo và các dự án nằm trong C và C ++)

chỉnh sửa : để làm rõ, clang chạy nhanh hơn (trong một số trường hợp, nhanh hơn nhiều). Tôi không quan tâm đến việc tối ưu hóa ưa thích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.