Skip to main content

ทำความเข้าใจคำสั่ง Unix และ Linux: make

วิธีhackหรือดูรหัสwifiด้วยโปรแกรมcmd ได้จริง100% "BYFREETIME TV" (มิถุนายน 2026)

วิธีhackหรือดูรหัสwifiด้วยโปรแกรมcmd ได้จริง100% "BYFREETIME TV" (มิถุนายน 2026)
Anonim

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

บันทึก: หน้านี้เป็นสารสกัดจากเอกสารประกอบของ GNU make . มีการปรับปรุงเป็นครั้งคราวเนื่องจากโครงการ GNU ไม่ได้ใช้ nroff สำหรับเอกสารฉบับสมบูรณ์ฉบับสมบูรณ์โปรดดูไฟล์ข้อมูล make.info ที่ทำจากไฟล์ต้นฉบับของ Texinfo make.texinfo

ไวยากรณ์และการจัดทำยูทิลิตี้ให้

ทำ -f Makefile ตัวเลือก … เป้า …

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

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

ยูทิลิตี make รันคำสั่งใน makefile เพื่ออัพเดตชื่อเป้าหมายอย่างน้อยหนึ่งชื่อโดยที่ ชื่อ มักเป็นโปรแกรม ถ้าไม่-f เป็นตัวเลือกให้ทำจะมองหา makefilesGNUmakefile, Makefile, และMakefile, เพื่อให้.

โดยปกติคุณควรเรียก makefile ของคุณ makefile หรือ Makefile (ขอแนะนำให้ใช้ Makefile เนื่องจากปรากฏเด่นชัดอยู่ใกล้กับจุดเริ่มต้นของรายการไดเรกทอรีใกล้กับไฟล์สำคัญอื่น ๆ เช่นREADME) ไม่แนะนำให้ใช้การตรวจสอบชื่อแรกของ GNUmakefile สำหรับ makefiles ส่วนใหญ่ คุณควรใช้ชื่อนี้หากคุณมี makefile เฉพาะสำหรับ GNU และจะไม่เข้าใจในเวอร์ชันอื่น ๆ ถ้า makefile เป็น -, อินพุตมาตรฐานจะถูกอ่าน

ทำ ยูทิลิตี้จะอัปเดตเป้าหมายหากขึ้นอยู่กับไฟล์เบื้องต้นที่ได้รับการแก้ไขเนื่องจากเป้าหมายถูกแก้ไขครั้งล่าสุดหรือหากเป้าหมายไม่มีอยู่

ตัวเลือก

-b และ -m ตัวเลือกจะถูกละเว้นสำหรับความเข้ากันได้กับรุ่นอื่น ๆ ของทำ

-Cdir จะเปลี่ยนเป็น directory dir ก่อนอ่าน makefiles หรือทำอะไรอื่น ถ้าหลายรายการ-C ตัวเลือกถูกระบุแต่ละคำถูกตีความเมื่อเทียบกับข้อความก่อนหน้านี้:-C/ -C ฯลฯ เท่ากับ-C / etc. โดยทั่วไปจะใช้กับการเรียกซ้ำแบบทวนซ้ำของ make

-d จะพิมพ์ข้อมูลดีบักนอกเหนือจากการประมวลผลตามปกติ ข้อมูลการแก้จุดบกพร่องระบุว่าแฟ้มใดที่กำลังได้รับการพิจารณาสำหรับการสร้างใหม่ซึ่งจะมีการเปรียบเทียบเวลาของไฟล์กับสิ่งที่ผลลัพธ์ซึ่งไฟล์เหล่านี้จำเป็นต้องได้รับการปรับปรุงใหม่ซึ่งกฎเกณฑ์โดยนัยนั้นได้รับการพิจารณาและมีการนำไปใช้ทุกอย่างที่น่าสนใจเกี่ยวกับวิธีการตัดสินใจว่าจะทำอย่างไร .

-e ตัวเลือกให้ตัวแปรที่นำมาจากสภาพแวดล้อมสำคัญกว่าตัวแปรจาก makefiles

-f ไฟล์ ตัวเลือกใช้ ไฟล์ เป็น makefile

-ผม จะละเว้นข้อผิดพลาดทั้งหมดในคำสั่งที่เรียกใช้เพื่อสร้างไฟล์ใหม่

-ผม dir ระบุไดเรกทอรี dir เพื่อค้นหา makefiles รวม ถ้าหลายคน-ผม ตัวเลือกถูกใช้เพื่อระบุไดเร็กทอรีหลายไดเรกทอรีจะค้นหาตามลำดับที่ระบุ ไม่เหมือนข้อโต้แย้งกับธงอื่นของ make ไดเรกทอรีที่ให้มาด้วย-ผม ธงอาจมาจากธง:-Idir ได้รับอนุญาตรวมทั้ง- ฉันผบ . ไวยากรณ์นี้ได้รับอนุญาตให้เข้ากันได้กับ C preprocessor ของ-ผม ธง.

-j งาน ระบุจำนวนงาน (คำสั่ง) ที่จะทำงานพร้อมกัน ถ้ามีมากกว่าหนึ่งข้อ-j ตัวเลือกสุดท้ายมีประสิทธิภาพ ถ้า-j ตัวเลือกจะได้รับโดยไม่มีการโต้แย้ง, make จะไม่ จำกัด จำนวนงานที่สามารถทำงานพร้อมกันได้

-k ตัวเลือกยังคงดำเนินต่อไปได้มากที่สุดหลังจากข้อผิดพลาด ในขณะที่เป้าหมายที่ล้มเหลวและกลุ่มที่พึ่งพาไม่สามารถทำใหม่ได้การพึ่งพาอื่น ๆ ของเป้าหมายเหล่านี้สามารถประมวลผลได้ทั้งหมด

-l และ โหลด -l ตัวเลือกระบุว่าไม่มีงานใหม่ (คำสั่ง) ควรเริ่มต้นหากมีงานอื่น ๆ ทำงานอยู่และมีค่าเฉลี่ยในการโหลดอย่างน้อยภาระ (หมายเลขจุดลอยตัว) ไม่มีอาร์กิวเมนต์จะลบขีด จำกัด โหลดก่อนหน้านี้

-n ตัวเลือกพิมพ์คำสั่งที่จะดำเนินการ แต่ไม่ได้ดำเนินการพวกเขา

-o ไฟล์ ตัวเลือกไม่ได้สร้างใหม่ ไฟล์ แม้ว่าจะเก่ากว่าการอ้างอิงและไม่ได้ทำใหม่ทุกอย่างเนื่องจากมีการเปลี่ยนแปลง ไฟล์ . โดยทั่วไปไฟล์จะถือว่าเก่ามากและกฎจะถูกละเลย

-p ตัวเลือกพิมพ์ฐานข้อมูล (กฎและตัวแปรค่า) ที่เป็นผลมาจากการอ่าน makefiles จากนั้นจะดำเนินการตามปกติหรือที่ระบุไว้เป็นอย่างอื่นนอกจากนี้ยังพิมพ์ข้อมูลรุ่นที่กำหนดโดย-v เปลี่ยน (ดูด้านล่าง) หากต้องการพิมพ์ฐานข้อมูลโดยไม่ต้องพยายามสร้างไฟล์ใหม่ให้ใช้ทำ -p -f / dev / null .

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

-r ตัวเลือกช่วยลดการใช้กฎที่มีอยู่ในตัว นอกจากนี้จะล้างรายการดีฟอลต์ของคำต่อท้ายสำหรับกฎต่อท้าย

-s ตัวเลือกจะปิดการทำงาน ไม่พิมพ์คำสั่งตามที่กำหนด

-S ยกเลิกผลกระทบของ-k ตัวเลือก นี้ไม่จำเป็นยกเว้นใน recursive ให้ ที่ไหน-k อาจได้รับการสืบทอดมาจากการสร้างรายได้ระดับบนสุดผ่านทาง MAKEFLAGS หรือหากคุณตั้งค่าไว้-k ใน MAKEFLAGS ในสภาพแวดล้อมของคุณ

t- (เครื่องหมายพวกเขาได้ถึงวันที่โดยไม่ต้องจริงๆเปลี่ยนพวกเขา) แทนการใช้คำสั่งของพวกเขา นี้จะใช้เพื่อหลอกว่าคำสั่งได้ทำเพื่อหลอกลวง invocations อนาคตของการทำ

-v ตัวเลือกพิมพ์รุ่นของโปรแกรมทำบวกลิขสิทธิ์รายชื่อผู้เขียนและแจ้งให้ทราบว่าไม่มีการรับประกันใด ๆ

-w ตัวเลือกพิมพ์ข้อความที่มีไดเรคทอรี่ทำงานก่อนและหลังการประมวลผลอื่น ๆ นี้อาจเป็นประโยชน์สำหรับการติดตามข้อผิดพลาดจากรังซับซ้อนของ recursive ทำ คำสั่ง

-W ไฟล์ ตัวเลือกแกล้งทำเป็นเป้าหมาย ไฟล์ เพิ่งได้รับการแก้ไข เมื่อใช้กับ-n ธงนี้จะแสดงสิ่งที่จะเกิดขึ้นหากคุณต้องการแก้ไขไฟล์นั้น ไม่มี-nก็เกือบจะเหมือนกับการใช้ aแตะ คำสั่งในแฟ้มที่กำหนดก่อนที่จะทำงานให้ยกเว้นว่าเวลาการเปลี่ยนแปลงจะมีการเปลี่ยนแปลงเฉพาะในจินตนาการของทำ