Tại sao FreeBSD sử dụng GCC được cấp phép GPL?


11

Tại sao FreeBSD sử dụng GCC làm trình biên dịch mặc định?

Tôi có ấn tượng rằng một trụ cột cốt lõi của triết lý FreeBSD là không sử dụng bất kỳ phần mềm GNU nào và đặc biệt là mã GPL.

Tuy nhiên, GCC, cả GNU và GPL đều đi kèm với FreeBSD.

Tại sao?

Câu trả lời:


13

FreeBSD 10 sẽ sử dụng trình biên dịch Clang được cấp phép BSD thay vì GCC cho các hệ thống Intel x86 32 và 64 bit. Điều duy nhất ngăn chặn một công tắc bán buôn trên tất cả các nền tảng CPU phát hành FreeBSD là thời gian và sự quan tâm của nhà phát triển.

Đối với FreeBSD 9 - sắp được phát hành khi câu hỏi này được đặt ra lần đầu tiên - đã có thảo luận về việc biến Clang thành trình biên dịch mặc định, nhưng có đủ vấn đề với việc họ quyết định gửi Clang cùng với GCC và để GCC mặc định cho phiên bản này.

Về lý do tại sao FreeBSD không thử chuyển sang trình biên dịch không phải GPL nhiều năm trước, hoặc thậm chí có thể tự tạo, lý do rất đơn giản: thật khó.

Bất kỳ sinh viên CS chưa tốt nghiệp nào cũng có thể viết một trình biên dịch - nó thậm chí có thể là một yêu cầu khóa học - nhưng viết một trình biên dịch tốt là khó. Viết một trình biên dịch tốt vẫn khó hơn khi cần một ngôn ngữ như C hoặc C ++. Nhiệm vụ trở nên khó khăn hơn khi bạn đưa ra quyết định hợp lý rằng trình biên dịch mới ít nhất phải tiếp cận hiệu năng và khả năng của GCC, có một vài thập kỷ phát triển đằng sau nó.

Do đó, GCC 4.2 vẫn là trình biên dịch mặc định trên FreeBSD 9.

Nhân tiện, GCC 3.4, 4.4, 4.6, 4.7 và 4.8 nằm trong cây Cổng FreeBSD 9, và một số phiên bản của GCC có thể sẽ ở lại Cổng trong nhiều năm tới. Có rất nhiều gói phần mềm ngoài kia - nhiều gói trong Cổng FreeBSD - chỉ được xây dựng với GCC.


1
Trình biên dịch không chỉ ít nhất phải gần với hiệu suất mà còn phải hỗ trợ các phần mở rộng ngôn ngữ. Các nhà phát triển thường sử dụng những thứ đó vì một số lý do (hoặc không có gì ;-))
johannes

8

Nó có thể không cần thiết. Cho đến gần đây, các trình biên dịch C được cấp phép BSD có lẽ ít hoặc không đạt được tính năng tương đương gcc.

Từ các Mục tiêu Dự án FreeBSD :

Mã đó trong cây nguồn của chúng tôi nằm trong Giấy phép Công cộng GNU (GPL) hoặc Giấy phép Công cộng Chung Thư viện (LGPL) đi kèm với một chuỗi nhiều hơn một chút, mặc dù ít nhất là về phía truy cập được thi hành thay vì ngược lại thông thường. Tuy nhiên, do sự phức tạp bổ sung có thể phát triển trong việc sử dụng phần mềm GPL thương mại mà chúng tôi làm, tuy nhiên, thích phần mềm được gửi theo bản quyền BSD thoải mái hơn khi đó là một lựa chọn hợp lý để làm như vậy.

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.