Có một bản phân phối Linux được biên dịch với clang / llvm không?


8

Có một bản phân phối Linux được biên dịch với clang / llvm không? Có vẻ như vào cuối năm 2010, hạt nhân đã hoạt động. Nếu không, nó có nhiều khả năng là một vấn đề kỹ thuật hoặc cấp phép?


Tôi không biết bất kỳ cái gì. Tôi nghĩ rằng hầu hết các bản phân phối Linux đều sử dụng GCC, phần mềm hỗ trợ với các giấy phép phổ biến và một phần mềm được xây dựng riêng để xử lý mã GNU. Clang hiện đang được cộng đồng BSD đón nhận vì những lý do tương tự. (Quá trình tố tụng là một sự đơn giản hóa rất lớn các vấn đề chính trị và kỹ thuật)
Chris S


3
@James Xin đừng chỉnh sửa câu trả lời vào câu hỏi; bạn có thể gửi một câu trả lời thực tế dưới đây và đánh dấu nó được chấp nhận . Ngoài ra, nếu bạn đăng ký trên SF, bạn sẽ tự động sở hữu câu hỏi tại đây
Michael Mrozek

Câu trả lời:


8

Tình hình với Debian

Là một câu trả lời muộn cho câu hỏi này, những gì @jmtd nói chính xác là những gì xảy ra định kỳ trong kho lưu trữ Debian.

Các gói được biên dịch lại với các bộ công cụ mới hơn (trình biên dịch, trình liên kết, v.v.) và khi biên dịch lại không thành công, các lỗi đối với các gói không được biên dịch được đưa ra với dấu hiệu của FTBFS ("không thể xây dựng từ nguồn").

Những lỗi như vậy nói chung là một dấu hiệu cho thấy điều gì đó xấu xảy ra và thường được xếp hạng với mức độ nghiêm trọng cao và được đưa ra trạng thái của các lỗi "phát hành nghiêm trọng", có nghĩa là một bản phát hành mới không thể được thực hiện với những lỗi đó chưa được giải quyết.

Cụ thể, Lucas Nussbaum đã biên dịch lại toàn bộ kho lưu trữ của Dự án Debian trong một mạng lưới như một phương tiện của Đánh giá chất lượng.

Tuy nhiên, gần đây, Sylvestre Ledru và một số Nhà phát triển Debian khác đã khuyên các sinh viên trong Mùa hè mã năm 2012 của Google cho phép thay thế cả GCC bởi Clang và libstdc++(thư viện hỗ trợ của GCC cho C ++) bởi libc++(đối tác của Clang / LLVM).

Có một trang web nơi kết quả tổng hợp toàn bộ bộ sưu tập các gói Debian đã được công bố và các báo cáo tiếp theo đã được ghi lại bởi LWN và chương trình tách riêng quá trình xây dựng Debian từ GCC đã được kết thúc thành công .

Vì vậy, chúng ta có thể sớm thấy một hương vị của Debian được biên dịch bằng clang / llvm, tùy thuộc vào mức độ hỗ trợ mà những kết quả thành công này có thể đạt được.

Người mới

Kể từ bản cập nhật này (2016-08-16), một phiên bản mới của bản phân phối Linux truyền thống được biên dịch bằng clang và llvm, OpenMandriva Lx 3.0 , hiện đang được phát hành cuối cùng. Theo ghi chú của nó, nó được biên soạn, càng nhiều càng tốt, không chỉ với clang và llvm, mà còn với các mức tối ưu hóa cao "thông thường" cả với Tối ưu hóa thời gian liên kết (LTO) .

LTO

Mặc dù chủ đề chính của câu hỏi và câu trả lời này là llvm / clang, nhưng công bằng mà nói, GCC cũng cần lưu ý tính năng LTO (có thêm thông tin về LTO ).

Về lý thuyết, LTO, như đã thấy trong clang / llvm và GCC mới hơn, có khả năng làm cho không chỉ các nhị phân kết quả nhanh hơn, mà còn có các yêu cầu bộ nhớ nhỏ hơn cho phần văn bản của chương trình (và nhân Linux là một trong những lợi ích tiềm năng của LTO ).

Tôi chưa đọc bao nhiêu OpenMandriva Lx 3.0 sử dụng LTO trên tất cả các chương trình, nhưng tôi rất vui vì nó sử dụng clang / llvm + LTO và tôi rất thích thấy mọi người thực hiện nhiều điểm chuẩn độc lập so sánh và đối chiếu dựa trên GCC "thông thường", các bản phân phối không được tối ưu hóa LTO cho OpenMandriva Lx 3.0.


@AleksandrDubinsky, cảm ơn vì đã cảm ơn tôi, nhưng tôi chỉ đang làm những gì tôi muốn có ở SE nói chung. Thật khó chịu khi đi đến một câu hỏi / câu trả lời có mùi giống như bụi tinh khiết (tất nhiên bất cứ khi nào vấn đề không nhất thời).
rbrito

5

Chưa. Theo báo cáo lỗi hiện đang mở này , có vẻ như ngay cả kernel cũng không biên dịch được.


Báo cáo lỗi chứa một mục ở cuối liên kết đến dự án LLVM Linux của Bryce Lelback. Bryce là người đã bắt đầu chuỗi thảo luận tháng 10 năm 2010 Clang xây dựng Linux Kernel hoạt động (Khởi động RL5 với SMP, kết nối mạng và X, tự lưu trữ) Chủ đề đó là nguồn cho trích dẫn "kernel đang hoạt động" trong câu hỏi của tôi. Tôi sẽ để mắt đến dự án lll.

@James Thêm một lời nhắc kể từ khi bạn đề cập đến việc chấp nhận: nếu bạn đăng ký trên SF với cùng một OpenID bạn đã sử dụng ở đây, bạn sẽ có thể chấp nhận câu trả lời tại đây
Michael Mrozek

2

Trong khi các nhị phân của người dùng cuối không được xây dựng bằng clang / llvm, hầu hết kho lưu trữ Debian đã được xây dựng (và được xây dựng lại) bằng clang / llvm (và binutils-gold và các bit và miếng khác) bởi những người muốn phơi bày các lỗi di động trong bộ phần mềm (và chính trình biên dịch).


Không phải nhị phân của người dùng cuối là một phần của kho lưu trữ Debian?
tshepang

1
Vâng, và những người được xây dựng với gcc. Tách biệt khỏi các nhị phân của người dùng cuối, các gói nguồn được xây dựng lại như là một phần của nhiều quá trình tích hợp liên tục, một số trong đó sử dụng các công cụ biên dịch / linker / libc thay thế.
jmtd

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.