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?
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?
Câu trả lời:
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.
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" và cả với Tối ưu hóa thời gian liên kết (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.
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.
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).
Gần đây, OpenSuse - Bản phát hành cuộn Tumbleweed là đặt LTO trên gcc9 cho các bản dựng của nó. http://hubicka.blogspot.com/2019/05/gcc-9-link-time-and-inter-procedural.html