การคอมไพล์บน Linux: 3 ขั้นตอนในการสร้างไฟล์ไบนารี 🔥
บทสรุปที่สำคัญ
- ซอฟต์แวร์ส่วนใหญ่ปฏิบัติตามกระบวนการ 3 ขั้นตอนในการคอมไพล์จากโค้ดต้นฉบับ:
./configure && make && make install
. - สคริปต์ กำหนดค่า ตรวจสอบการอ้างอิง ทำ สร้างไฟล์ปฏิบัติการและเครื่องมือเช่น ออโต้คอนเฟอเรนซ์/ออโต้เมค ทำให้กระบวนการนี้เป็นแบบอัตโนมัติ
- การติดตั้งมักเป็นทางเลือก ทำให้การรันคำสั่งที่คัดลอกลงในไดเร็กทอรีใน
เส้นทาง
ของระบบ
การคอมไพล์จากโค้ดต้นฉบับอาจดูน่ากลัวเมื่อเทียบกับการใช้ตัวจัดการแพ็คเกจ แต่ด้วยคำสั่งพื้นฐานสามคำสั่ง กระบวนการนี้จึงง่ายและตรงไปตรงมา 🚀
การคอมไพล์จากซอร์สโค้ดคืออะไร?
โปรแกรมที่คุณใช้สามารถตีความหรือคอมไพล์ได้ โปรแกรมที่ตีความแล้วคือไฟล์ข้อความที่มีโค้ดที่โปรแกรมอื่น (อินเทอร์พรีเตอร์) รันแบบเรียลไทม์ ในทางกลับกัน โปรแกรมที่คอมไพล์แล้วคือไฟล์ไบนารีที่มีโค้ดเครื่องที่พร้อมจะรัน
ไฟล์ปฏิบัติการที่คอมไพล์แล้วนั้นพบได้ทั่วไป โดยเฉพาะในโปรแกรมขนาดใหญ่ เมื่อคุณคอมไพล์จากซอร์สโค้ด คุณsas เป็นคอมไพเลอร์เช่น จีซีซี
เพื่อแปลงโค้ดให้เป็นโปรแกรมที่สามารถทำงานได้ โดยมักจะกระจายไปยังไฟล์หลายไฟล์

กระบวนการรวบรวมอาจมีขอบเขตกว้างขวางและซับซ้อน ซึ่งเป็นเหตุว่าทำไมจึงมักใช้โปรแกรมเช่น ทำ
. ไฟล์ เมคไฟล์ ควบคุมวิธีการสร้างไฟล์ปฏิบัติการขั้นสุดท้าย
ในโครงการขนาดใหญ่เหล่านี้ เมคไฟล์ อาจมีความซับซ้อนมากจนต้องสร้างขึ้นโดยอัตโนมัติด้วยเครื่องมือเช่น ออโต้คอนฟ์ และ ออโต้เมค เพื่อให้มั่นใจถึงความเข้ากันได้ระหว่างสถาปัตยกรรมที่แตกต่างกัน 🛠️
กระบวนการสร้าง 3 ขั้นตอน: กำหนดค่า สร้าง และติดตั้ง
ซอฟต์แวร์ส่วนใหญ่ใช้รูปแบบพื้นฐานนี้ในการคอมไพล์จากโค้ดต้นฉบับ:
./configure && make && make install
โปรแกรมยอดนิยมเช่น Apache ใช้ลำดับนี้ (หรือตัวแปรบางตัว) เช่น อธิบายไฟล์ของเขา ติดตั้ง:

Node.js ยังปฏิบัติตามโครงสร้างนี้ ดังที่ระบุไว้ในไฟล์ BUILDING.md:

แต่ละโครงการอาจมีความแตกต่างเล็กน้อยจากสตริงคำสั่งนี้ ให้ใช้ตัวดำเนินการตรรกะ AND (&&
) หยุดกระบวนการหากขั้นตอนใดล้มเหลว:
./configure && make && make install
หรือคุณสามารถรันคำสั่งแต่ละคำสั่งแยกกันในบรรทัดเดียวโดยใช้เครื่องหมายเซมิโคลอน ถึงแม้ว่าการดำเนินการนี้จะรันคำสั่งทั้งหมดโดยไม่หยุดหากคำสั่งใดล้มเหลวก็ตาม:
./configure; make; make install
คุณสามารถทำสามบรรทัดแยกกันได้:
./configure make make install
หากคุณต้องการเพียงทดลองใช้โปรแกรมโดยไม่ต้องติดตั้ง คุณสามารถข้ามได้ ทำการติดตั้ง
และรันจากโฟลเดอร์นั้น
กำหนดค่า
พร้อมแล้ว ในขณะที่บางโปรแกรม (เช่น grep) จำเป็นต้องรันสคริปต์อื่นก่อนจึงจะสร้างได้ อ้างอิงไฟล์ INSTALL, BUILD หรือ README เสมอ เพื่อทำตามคำแนะนำของโปรเจกต์ 📋วิธีการเริ่มกระบวนการ ./configure
สคริปต์ กำหนดค่า
เป็นจุดเริ่มต้นของกระบวนการรวบรวมโดยปรับโครงการให้เข้ากับสภาพแวดล้อมของคุณ
สคริปต์นี้จะตรวจสอบการอ้างอิงที่จำเป็นสำหรับโครงการ ตรวจสอบเวอร์ชันและความพร้อมใช้งาน เมื่อเสร็จสมบูรณ์ จะสร้างไฟล์ชื่อ เมคไฟล์
เพื่อการดำเนินการขั้นต่อไป
สคริปต์ กำหนดค่า
มีตัวเลือกที่สามารถกำหนดค่าได้มากมายด้วย ./กำหนดค่า --ช่วยเหลือ
ช่วยให้คุณสามารถปรับแต่งรายละเอียดการสร้างได้
กำหนดค่า
เช่น ทำ
สร้างผลลัพธ์จำนวนมากบนหน้าจอ ใช้ตัวเลือก --เงียบ
หากคุณต้องการรันคำสั่งเหล่านี้โดยไม่แสดงรายละเอียดมากนัก 🤫หากสคริปต์หายไป กำหนดค่า
โปรเจ็กต์บางโปรเจ็กต์มีสคริปต์เช่น ออโต้เจน.ช
เพื่อสร้างมันขึ้นมา ตัวอย่างเช่น htop ใช้มัน:

โครงการที่เรียบง่ายมากหรือโครงการที่เขียนด้วยภาษาอื่นอาจไม่มี กำหนดค่า
. มีขั้นตอนการดำเนินการ 2 ขั้นตอนดังนี้: ทำ && ทำติดตั้ง
.
สคริปต์ กำหนดค่า
นอกจากนี้ยังควบคุมรายละเอียดการติดตั้ง เช่น พารามิเตอร์ --คำนำหน้า
ซึ่งกำหนดไดเรกทอรีรากของการติดตั้ง โดยค่าเริ่มต้นคือ /usr/ท้องถิ่น
แต่คุณสามารถเปลี่ยนแปลงเพื่อจัดระเบียบไฟล์ของคุณให้ดีขึ้นได้
ทำส่วนใหญ่ของงาน
หลังจาก กำหนดค่า
สร้าง เมคไฟล์
การรวบรวมซอฟต์แวร์จริงเริ่มต้นด้วย ทำ
.
โปรแกรมนี้จะอ่าน เมคไฟล์
และปฏิบัติตามกฎในการตัดสินใจว่าจะสร้างหรืออัปเดตไฟล์ใด เมคไฟล์
การเขียนด้วยลายมือจะเข้าใจง่ายสำหรับผู้ที่รู้โครงสร้างประโยค
เช่นอันนี้ เมคไฟล์
คอมไพล์โปรแกรมแบบง่ายๆ ที่ขึ้นอยู่กับไฟล์ โปรแกรม.c
:
โปรแกรม: program.c gcc -o โปรแกรม program.c
ทำ
ตรวจสอบว่า โปรแกรม.c
เปลี่ยนแปลงไปตั้งแต่การคอมไพล์ครั้งล่าสุด ถ้ามันไม่เปลี่ยนแปลง ไม่ต้องทำอะไร ถ้ามีการเปลี่ยนแปลง ให้คอมไพล์ด้วย จีซีซี
.

ที่ เมคไฟล์
สร้างขึ้นโดยอัตโนมัติมักจะซับซ้อนกว่ามาก ตัวอย่างเช่น เมคไฟล์
htop มี 2,440 บรรทัด:

แต่คุณไม่จำเป็นต้องเข้าใจทุกรายละเอียดหรอก เว้นแต่คุณจะแก้ไขซอร์สโค้ด ก็รันมันได้เลย ทำ
และปล่อยให้ระบบจัดการมัน
ขั้นตอน ทำ
อาจใช้เวลาหลายนาทีหรือนานกว่านั้นสำหรับโปรเจ็กต์ขนาดใหญ่ หากล้มเหลว มักเกิดจากการขาดการอ้างอิง ข้อดีคือ ทำ
บันทึกความคืบหน้าและดำเนินการต่อจากจุดที่ค้างไว้เมื่อคุณรันอีกครั้ง
เสร็จสิ้นด้วยการติดตั้ง
หลังจากคอมไพล์แล้ว ไฟล์ปฏิบัติการที่สร้างขึ้นมักจะอยู่ในรูทของโครงการหรือในไดเร็กทอรีย่อยที่เรียกว่า ถังขยะ
คุณสามารถรันได้โดยใช้เส้นทางแบบเต็ม:

สิ่งนี้มีประโยชน์สำหรับการทดสอบ แต่ในระยะยาวคุณจะต้องติดตั้งในตำแหน่งที่เข้าถึงได้
วัตถุประสงค์ ติดตั้ง
ที่กำหนด เมคไฟล์
คัดลอกไฟล์ที่จำเป็นและตั้งค่าการอนุญาต ตำแหน่งเริ่มต้นคือ /usr/local/bin
แม้ว่าคุณจะเปลี่ยนแปลงมันได้ด้วย --คำนำหน้า
.
หากคุณไม่มีสิทธิ์สำหรับโฟลเดอร์นั้น ให้รัน sudo make ติดตั้ง
และให้รหัสผ่านผู้ดูแลระบบ
ไดเรกทอรีการติดตั้งจะต้องรวมอยู่ในตัวแปรของคุณ เส้นทาง
เพื่อให้สามารถรันโปรแกรมโดยใช้เพียงชื่อโดยไม่ต้องระบุเส้นทางแบบเต็ม