ทำความเข้าใจกับคำสั่ง Unix และ Linux: make
ยูทิลิตี make จะกำหนดชิ้นส่วนของโปรแกรมขนาดใหญ่ที่ต้องคอมไพล์ใหม่โดยอัตโนมัติ และออกคำสั่งเพื่อคอมไพล์ใหม่ คู่มือนี้อธิบายการใช้งาน make ของ GNU ซึ่งเขียนโดย Richard Stallman และ Roland McGrath
ยูทิลิตี้ make ไม่จำกัดเฉพาะโปรแกรม คุณสามารถใช้เพื่ออธิบายงานใดๆ ที่ไฟล์บางไฟล์ต้องได้รับการอัปเดตโดยอัตโนมัติจากไฟล์อื่นๆ เมื่อใดก็ตามที่มีการเปลี่ยนแปลงอื่นๆ คำสั่ง make มักใช้ในกระบวนการทั่วไปในการสร้างซอฟต์แวร์จากซอร์สโค้ด

วิธีใช้ Make Command ใน Linux
นี่เป็นตัวอย่างทั่วไปของวิธีใช้คำสั่ง make บน Linux โดยปกติ มันเป็นส่วนหนึ่งของกระบวนการสามขั้นตอนง่ายๆ ในการสร้างแอปโอเพนซอร์สจากซอร์สโค้ด
ตัวอย่างเหล่านี้แสดงให้เห็น โปรแกรมภาษาซี เนื่องจากสิ่งเหล่านี้เป็นเรื่องธรรมดาที่สุด แต่คุณสามารถใช้ make กับภาษาการเขียนโปรแกรมใดๆ ก็ได้ที่สามารถรันคอมไพเลอร์ด้วยคำสั่งเชลล์
-
ติดตั้ง Git หากคุณไม่มี ร่วมกับเครื่องมือสร้างซอฟต์แวร์
apt ติดตั้ง git build-essential
-
เลือกแอปที่จะใช้งานหรือดาวน์โหลด VLC
apt build-dep vlc
-
โคลนซอร์สโค้ด VLC
git โคลน https://github.com/videolan/vlc.git
-
เปลี่ยนไดเร็กทอรีเป็นซอร์สโค้ด VLC ที่โคลน และรันสคริปต์การกำหนดค่า
cd vlc
./bootstrap
./configure -
เรียกใช้ ทำ คำสั่งพร้อมกับ -NS ตั้งค่าสถานะ ตามด้วยจำนวนคอร์/เธรด CPU ที่ระบบของคุณมี
ทำให้ -j4
-
จะใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ เมื่อเสร็จแล้วให้ติดตั้งแอพด้วย ทำการติดตั้ง.
sudo ทำการติดตั้ง
คุณเสร็จแล้ว
บ่อยครั้ง นี่คือวิธีที่คุณจะเห็นคำสั่ง make ที่ใช้ อาจมีขั้นตอนที่ซับซ้อนกว่านี้หรือมีการเปลี่ยนแปลงเล็กน้อย แต่ก็ไม่เคยซับซ้อนเกินไป
GNU ทำให้คำสั่งทำงานอย่างไร
ส่วนด้านล่างเป็นรายละเอียดทางเทคนิคของคำสั่ง make หากคุณต้องการสร้างประโยชน์สูงสุด โปรดดูตัวเลือกด้านล่าง
หน้านี้เป็นเพียงส่วนแยกของเอกสารประกอบของ GNU make. มีการอัปเดตเป็นครั้งคราวเท่านั้นเนื่องจากโปรเจ็กต์ GNU ไม่ได้ใช้ nroff สำหรับเอกสารฉบับสมบูรณ์ ให้ดูที่ไฟล์ข้อมูล make.info ซึ่งทำมาจากไฟล์ต้นฉบับ Texinfo make.texinfo.
ไวยากรณ์และการเตรียมยูทิลิตี้ทำ
ไวยากรณ์ของ make ยูทิลิตี้คือ ทำ [ -NSmakefile ] [ ตัวเลือก ]... เป้า...
เพื่อเตรียมใช้ make คุณต้องเขียนไฟล์ชื่อ the makefile ที่อธิบายความสัมพันธ์ระหว่างไฟล์ในโปรแกรมของคุณและระบุคำสั่งสำหรับการอัพเดตแต่ละไฟล์ โดยปกติ an ไฟล์ปฏิบัติการ ได้รับการอัพเดตจากไฟล์อ็อบเจ็กต์ซึ่งในทางกลับกันทำโดยการคอมไพล์ไฟล์ต้นฉบับ
เมื่อมี makefile ที่เหมาะสม ทุกครั้งที่คุณเปลี่ยนไฟล์ต้นฉบับ คำสั่ง shell ทำ เพียงพอที่จะทำการคอมไพล์ใหม่ที่จำเป็นทั้งหมด โปรแกรม make ใช้ฐานข้อมูล makefile และเวลาแก้ไขล่าสุดของไฟล์เพื่อตัดสินใจว่าไฟล์ใดจำเป็นต้องได้รับการอัปเดต สำหรับแต่ละไฟล์ จะออกคำสั่งที่บันทึกไว้ในฐานข้อมูล
ยูทิลิตี้ make รันคำสั่งใน makefile เพื่ออัพเดตชื่อเป้าหมายตั้งแต่หนึ่งชื่อขึ้นไป โดยที่ ชื่อ มักจะเป็นโปรแกรม ถ้าไม่ -NS มีตัวเลือกให้ค้นหา makefiles GNUmakefile, makefile, และ Makefile, เพื่อให้.
โดยปกติคุณควรเรียก makefile เช่นกัน makefile หรือ Makefile. (ขอแนะนำให้คุณใช้ Makefile เพราะจะปรากฏอย่างเด่นชัดใกล้กับจุดเริ่มต้นของรายการไดเรกทอรี ใกล้ไฟล์สำคัญอื่น ๆ เช่น README) GNUmakefile ตรวจสอบชื่อแรกไม่แนะนำสำหรับส่วนใหญ่ makefiles ใช้ชื่อนี้เฉพาะเมื่อ makefile เฉพาะสำหรับยี่ห้อ GNU และยี่ห้ออื่นจะไม่เข้าใจ ถ้า makefile เป็น -, อินพุตมาตรฐานจะถูกอ่าน
NS ทำ ยูทิลิตีจะอัปเดตเป้าหมายหากขึ้นอยู่กับไฟล์ข้อกำหนดเบื้องต้นที่ได้รับการแก้ไขตั้งแต่แก้ไขเป้าหมายครั้งล่าสุด หรือหากเป้าหมายไม่มีอยู่
ตัวเลือกสำหรับ Make Utility
NS -NS และ -NS ตัวเลือกต่างๆ จะถูกละเว้นเนื่องจากความเข้ากันได้กับยี่ห้ออื่น
-C dir เปลี่ยนเป็น ไดเร็กทอรี dir ก่อนอ่าน makefiles หรือทำอย่างอื่น ถ้าหลาย -ค มีการระบุตัวเลือก แต่ละตัวเลือกจะถูกตีความโดยสัมพันธ์กับตัวเลือกก่อนหน้า: -ค / -C เป็นต้น เทียบเท่ากับ -C / etc. โดยทั่วไปจะใช้กับการเรียกซ้ำของ make
NS -NS ตัวเลือกพิมพ์ข้อมูลการดีบักเพิ่มเติมจากการประมวลผลปกติ ข้อมูลการดีบักระบุว่าไฟล์ใดกำลังได้รับการพิจารณาสำหรับการสร้างใหม่ ซึ่งกำลังเปรียบเทียบเวลาของไฟล์ และด้วยผลลัพธ์ใด ไฟล์ใดที่จำเป็นต้องทำใหม่ และการพิจารณากฎโดยปริยายใด และสิ่งใดคือ สมัครแล้ว.
NS -e ตัวเลือกให้ตัวแปรที่นำมาจากลำดับความสำคัญของสภาพแวดล้อมมากกว่าตัวแปรจาก makefiles
NS -NS ไฟล์ตัวเลือกที่ใช้ ไฟล์ เป็น makefile
NS -ผม ตัวเลือกละเว้นข้อผิดพลาดทั้งหมดในคำสั่งที่ดำเนินการเพื่อสร้างไฟล์ใหม่
NS -ผม dirตัวเลือกระบุไดเร็กทอรี dir เพื่อค้นหา makefiles ที่รวมอยู่ ถ้าหลาย-ผม ตัวเลือกใช้เพื่อระบุหลายไดเร็กทอรี ค้นหาไดเร็กทอรีตามลำดับที่ระบุ ไม่เหมือนกับอาร์กิวเมนต์ของแฟล็ก make อื่นๆ ไดเร็กทอรี with -ผม ธงอาจมาหลังธงโดยตรง: -อีดีร์ ได้รับอนุญาตเช่นเดียวกับ -I dir. ไวยากรณ์นี้ได้รับอนุญาตสำหรับความเข้ากันได้กับ C ตัวประมวลผลล่วงหน้าของ -ผม ธง.
NS -j งาน ตัวเลือกระบุ จำนวนงาน (คำสั่ง) ให้ทำงานพร้อมกัน ถ้ามีมากกว่าหนึ่ง -NS ตัวเลือกสุดท้ายมีผล ถ้า -NS มีตัวเลือกให้โดยไม่มีอาร์กิวเมนต์ ทำให้ไม่จำกัดจำนวนงานที่รันพร้อมกัน
NS -k ตัวเลือกจะดำเนินต่อไปให้มากที่สุดหลังจากเกิดข้อผิดพลาด เป้าหมายที่ล้มเหลวและเป้าหมายที่พึ่งพานั้นไม่สามารถสร้างใหม่ได้ อย่างไรก็ตาม การพึ่งพาอื่น ๆ ของเป้าหมายเหล่านี้สามารถประมวลผลได้เหมือนกันทั้งหมด
NS -l และ -l โหลด ตัวเลือกระบุว่าไม่ควรเริ่มงานใหม่ (คำสั่ง) หากมีงานอื่นที่ทำงานอยู่ และค่าเฉลี่ยโหลดเป็นอย่างน้อย โหลด (เลขทศนิยม). โดยไม่มีอาร์กิวเมนต์ มันจะลบขีดจำกัดการโหลดก่อนหน้า
NS -NS option พิมพ์คำสั่งที่จะถูกดำเนินการ แต่ไม่ได้ดำเนินการ
NS -o ไฟล์ตัวเลือกไม่ได้สร้างใหม่ ไฟล์ แม้ว่ามันจะเก่ากว่าการพึ่งพาและไม่ได้สร้างอะไรขึ้นมาใหม่เนื่องจากการเปลี่ยนแปลงในไฟล์. โดยพื้นฐานแล้วไฟล์จะถือว่าเก่าและกฎของไฟล์จะถูกละเว้น
NS -NS option พิมพ์ฐานข้อมูล (กฎและค่าตัวแปร) ที่เป็นผลมาจากการอ่าน makefiles จากนั้นจะดำเนินการตามปกติหรือตามที่ระบุไว้เป็นอย่างอื่น นอกจากนี้ยังพิมพ์ข้อมูลเวอร์ชันที่ได้รับจาก -v สวิตช์ (ดูด้านล่าง) หากต้องการพิมพ์ฐานข้อมูลโดยไม่พยายามสร้างไฟล์ใหม่ ให้ใช้ ทำ-NS-f/dev/null.
NS -NS ตัวเลือกกำหนดโหมดคำถาม มันไม่รันคำสั่งหรือพิมพ์อะไรเลย ส่งคืนสถานะการออกที่เป็นศูนย์หากเป้าหมายที่ระบุเป็นข้อมูลล่าสุด มิฉะนั้นจะเป็นศูนย์
NS -NS ตัวเลือกช่วยลดการใช้กฎโดยนัยในตัว นอกจากนี้ยังล้างรายการเริ่มต้นของคำต่อท้ายสำหรับกฎส่วนต่อท้าย
NS -NS ตัวเลือกปิดเสียงการทำงาน ไม่พิมพ์คำสั่งในขณะที่ดำเนินการ
NS -NS ตัวเลือกยกเลิกผลกระทบของ -k ตัวเลือก. สิ่งนี้ไม่จำเป็นยกเว้นใน makewhere แบบเรียกซ้ำ -k อาจสืบทอดมาจากยี่ห้อระดับบนสุดผ่าน MAKEFLAGS หรือถ้าคุณตั้งค่า -k ใน MAKEFLAGS ในสภาพแวดล้อมของคุณ
NS -NS ตัวเลือกสัมผัสไฟล์ (ทำเครื่องหมายให้เป็นปัจจุบันโดยไม่ต้องเปลี่ยนแปลง) แทนที่จะเรียกใช้คำสั่ง ใช้เพื่อแสร้งทำเป็นว่าคำสั่งนั้นเสร็จสิ้นแล้ว เพื่อหลอกการเรียกใช้ make ในอนาคต
NS -v option พิมพ์เวอร์ชันของโปรแกรม make บวกกับลิขสิทธิ์ รายชื่อผู้เขียน และประกาศที่ไม่มีการรับประกัน
NS -w option พิมพ์ข้อความที่มีไดเร็กทอรีการทำงานก่อนและหลังการประมวลผลอื่นๆ นี้อาจเป็นประโยชน์สำหรับการค้นหาข้อผิดพลาดจากซ้อนที่ซับซ้อนของ makecommands แบบเรียกซ้ำ
NS -W ไฟล์ ตัวเลือกแกล้งทำเป็นว่าเป้าหมายไฟล์ได้รับการแก้ไขแล้ว เมื่อใช้ร่วมกับ -NS ตั้งค่าสถานะ สิ่งนี้จะแสดงให้คุณเห็นว่าจะเกิดอะไรขึ้นหากคุณต้องแก้ไขไฟล์นั้น ปราศจาก -NS, มันเกือบจะเหมือนกับการวิ่ง a สัมผัส คำสั่งบนไฟล์ที่กำหนดก่อนที่จะรัน make ยกเว้นว่าเวลาการแก้ไขจะเปลี่ยนแปลงในจินตนาการของ make เท่านั้น