Tôi nghĩ bạn nên phân biệt giữa:
compile , v: Để sử dụng trình biên dịch để xử lý mã nguồn và tạo ra mã thực thi [1] .
và
install , v: Để kết nối, thiết lập hoặc chuẩn bị thứ gì đó để sử dụng [2] .
Biên dịch tạo ra các tệp thực thi nhị phân từ mã nguồn. Việc cài đặt chỉ đặt các tệp thực thi nhị phân đó vào đúng vị trí để chạy chúng sau này. Vì vậy, cài đặt và sử dụng không yêu cầu biên dịch nếu có sẵn các tệp nhị phân. Tương ứng, hãy nghĩ về “biên dịch” và “cài đặt” như về “nấu” và “phục vụ”.
Bây giờ, câu hỏi của bạn:
- Kernel được viết bằng C, tuy nhiên làm thế nào để kernel được biên dịch mà không cần cài đặt trình biên dịch?
Hạt nhân không thể được biên dịch mà không có trình biên dịch, nhưng nó có thể được cài đặt từ một tệp nhị phân đã biên dịch.
Thông thường, khi bạn cài đặt một hệ điều hành, bạn cài đặt một nhân được biên dịch trước (tệp thực thi nhị phân). Nó được biên dịch bởi một người khác. Và chỉ khi bạn muốn tự biên dịch hạt nhân, bạn cần nguồn và trình biên dịch, và tất cả các công cụ khác.
Ngay cả trong các bản phân phối "dựa trên nguồn" như gentoo, bạn bắt đầu chạy một tệp nhị phân đã biên dịch.
Vì vậy, bạn có thể sống cả đời mà không cần biên dịch hạt nhân, bởi vì bạn đã có người khác biên dịch chúng.
- Nếu trình biên dịch C được cài đặt trên máy của tôi trước khi biên dịch hạt nhân, thì làm cách nào để trình biên dịch tự biên dịch mà không cần cài đặt trình biên dịch?
Không thể chạy trình biên dịch nếu không có nhân (HĐH). Vì vậy, người ta phải cài đặt một nhân đã biên dịch để chạy trình biên dịch, nhưng không cần phải tự biên dịch nhân.
Một lần nữa, cách thực hành phổ biến nhất là cài đặt các tệp nhị phân đã biên dịch của trình biên dịch và sử dụng chúng để biên dịch bất kỳ thứ gì khác (bao gồm chính trình biên dịch và hạt nhân).
Bây giờ, vấn đề gà và trứng. Bản nhị phân đầu tiên được biên dịch bởi người khác ... Xem câu trả lời xuất sắc của dmckee.