ฉันคิดว่าคุณควรแยกแยะระหว่าง:
รวบรวมวี: ในการใช้คอมไพเลอร์ซอร์สโค้ดกระบวนการและผลิตรหัสปฏิบัติการ[1]
และ
ติดตั้งโวลต์: เพื่อเชื่อมต่อการตั้งค่าหรือเตรียมความพร้อมสำหรับการใช้งานบางสิ่งบางอย่าง[2]
การคอมไพล์สร้างไบนารีไฟล์ปฏิบัติการจากซอร์สโค้ด การติดตั้งเป็นเพียงการทำให้ไบนารีปฏิบัติการเหล่านั้นอยู่ในตำแหน่งที่ถูกต้องเพื่อเรียกใช้ในภายหลัง ดังนั้นการติดตั้งและการใช้งานจึงไม่จำเป็นต้องมีการคอมไพล์หากมีไบนารี ลองนึกถึงการ "รวบรวม" และ "ติดตั้ง" เช่นเกี่ยวกับ "ปรุงอาหาร" และ "เสิร์ฟ" ตามลำดับ
ตอนนี้คำถามของคุณ:
- เคอร์เนลถูกเขียนด้วย C อย่างไรก็ตามเคอร์เนลถูกคอมไพล์โดยไม่ติดตั้งคอมไพเลอร์ได้อย่างไร?
ไม่สามารถคอมไพล์เคอร์เนลได้หากไม่มีคอมไพเลอร์ แต่สามารถติดตั้งได้จากไบนารีที่คอมไพล์
โดยปกติแล้วเมื่อคุณติดตั้งระบบปฏิบัติการคุณจะต้องติดตั้งเคอร์เนลที่คอมไพล์ไว้ล่วงหน้า (ไบนารีปฏิบัติการ) มันถูกรวบรวมโดยคนอื่น และเฉพาะในกรณีที่คุณต้องการรวบรวมเคอร์เนลด้วยตัวคุณเองคุณต้องมีซอร์สและคอมไพเลอร์และเครื่องมืออื่น ๆ ทั้งหมด
แม้ในการแจกแจงแบบ "ตามแหล่งที่มา" เช่น gentoo คุณเริ่มต้นจากการเรียกใช้ไบนารีที่คอมไพล์แล้ว
ดังนั้นคุณสามารถมีชีวิตอยู่ได้ตลอดชีวิตโดยไม่ต้องรวบรวมเมล็ดเพราะคุณมีคนอื่นรวบรวมไว้
- หากคอมไพเลอร์ C ถูกติดตั้งบนเครื่องของฉันก่อนที่จะคอมไพล์เคอร์เนลคอมไพเลอร์จะรวบรวมเองได้อย่างไรโดยไม่ต้องติดตั้งคอมไพเลอร์
ไม่สามารถรันคอมไพเลอร์ได้หากไม่มีเคอร์เนล (OS) ดังนั้นเราจึงต้องติดตั้งเคอร์เนลที่คอมไพล์เพื่อรันคอมไพเลอร์ แต่ไม่จำเป็นต้องคอมไพล์เคอร์เนลด้วยตัวเอง
อีกครั้งวิธีปฏิบัติที่พบบ่อยที่สุดคือการติดตั้งไบนารีที่คอมไพเลอร์ของคอมไพเลอร์และใช้เพื่อรวบรวมสิ่งอื่นใด (รวมถึงตัวคอมไพเลอร์เองและเคอร์เนล)
ตอนนี้ปัญหาไก่กับไข่ ไบนารีแรกถูกรวบรวมโดยบุคคลอื่น ... ดูคำตอบที่ยอดเยี่ยมโดย dmckee