ไม่ว่าคุณจะทำงานกับ Ubuntu, Debian หรือ Red Hat คุณอาจเห็นข้อผิดพลาดที่ระบุว่า:*** ไม่ได้ระบุเป้าหมายและไม่พบ makefile หยุด. เนื่องจากนี่เป็นปัญหาทั่วไปที่เกี่ยวข้องกับ GNU Make โดยรวม คุณอาจเห็นสิ่งนี้ในการใช้งาน Unix นับไม่ถ้วน หมายความว่าไม่มีไฟล์ชื่อ makefile หรือ Makefile ในไดเร็กทอรีการทำงานปัจจุบันของคุณ โชคดีที่เป็นข้อผิดพลาดที่แก้ไขได้ง่าย
วิธีที่ 1:ค้นหา Makefile ในไดเร็กทอรีปัจจุบัน
คุณอาจต้องการลองใช้ สร้าง สั่งอีกครั้งในไดเร็กทอรีปัจจุบันเพื่อดูว่ามีข้อผิดพลาดเดียวกันนี้ส่งถึงคุณหรือไม่ นี่เป็นสิ่งสำคัญอย่างยิ่งหากคุณได้เปิดหน้าต่างเทอร์มินัลใหม่และพยายามค้นหาไดเรกทอรีที่ถูกต้องแล้ว หรือหากคุณใช้คำสั่ง cd ตั้งแต่ครั้งล่าสุดที่คุณพยายามเรียกใช้ GNU
สมมติว่าใช่ ให้ลองเรียกใช้ ls หรือ ผบ คำสั่งเพื่อดูว่าไฟล์ใดอยู่ในไดเร็กทอรีปัจจุบันของคุณ คุณอาจไม่อยู่ในส่วนที่ถูกต้องของแผนผังไดเร็กทอรี หากคุณสังเกตเห็นว่าเห็นไดเร็กทอรีที่อยู่ในรูท / ไดเร็กทอรีของคุณหรือโฮม ~ ไดเร็กทอรีของคุณ คุณจะต้องการรันคำสั่ง cd เพื่อวางตำแหน่งตัวเองในตำแหน่งที่ถูกต้องเพื่อรันคำสั่ง make
มีโอกาสที่คุณอาจพบว่าตัวเองอยู่ไกลจากที่ที่คุณคาดหวัง ในตัวอย่างของเรา เราลองใช้ make จากไดเร็กทอรี /var/crash และพบว่ามันไม่ได้ผลเลย ไม่สามารถคาดหวังให้เรียกใช้จากที่นี่ได้ เนื่องจากไฟล์เดียวในตำแหน่งนี้มาจากรายงานข้อขัดข้องที่ไม่เกี่ยวข้อง
เป็นไปได้มากว่าคุณจะต้องการเรียกใช้คำสั่ง make จากไดเร็กทอรีที่อยู่ภายในไดเร็กทอรีโฮมของคุณ ตัวอย่างเช่น หากคุณกำลังสร้าง GNU nano เวอร์ชันล่าสุดจากแหล่งที่มา คุณอาจมีไดเร็กทอรีอยู่ที่ ~/nano-2.9.6 ซึ่งคุณสามารถ cd ไปที่แล้วเรียกใช้ make อีกครั้ง คุณอาจต้องการลองใช้ ls อีกครั้งก่อนที่คุณจะพยายามทำให้แน่ใจว่ามี makefile อยู่ในไดเร็กทอรีเพื่อให้คุณสร้างได้
โปรดทราบว่าคุณจะต้องกำหนดค่าการติดตั้งก่อน คำสั่งกำหนดค่าสร้างสภาพแวดล้อมที่สมบูรณ์แบบสำหรับคอมไพเลอร์ GNU ให้เจริญ หากคุณไม่พบ makefile แม้แต่ในไดเรกทอรีโปรเจ็กต์ที่ถูกต้อง ให้เรียกใช้ ./configure ในขณะที่คุณยังคงอยู่ในนั้น ตามด้วย ทำ สั่งการ. หากคอมไพล์ถูกต้อง คุณสามารถติดตั้งโปรเจ็กต์ของคุณด้วย sudo make install แต่จำไว้ว่าคุณไม่ต้องการสร้างสิ่งใดในฐานะรูท ดังนั้นคุณจะไม่ต้องการเรียกใช้ sudo make หรือสิ่งอื่นนอกเหนือจากการติดตั้ง
วิธีที่ 2:การระบุ Makefile แบบกำหนดเอง
สมมติว่าแก้ไขปัญหาได้แล้ว คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม อย่างไรก็ตาม มีกรณีการใช้งานพิเศษสองกรณีที่ต้องพิจารณาหากวิธีก่อนหน้านี้ไม่สามารถแก้ไขปัญหาของคุณได้ ทั้งสองสิ่งนี้เกี่ยวข้องกับการเขียน makefile ของคุณเองสำหรับโครงการที่คุณกำหนดค่าด้วยมือ
คุณระบุ makefile ที่กำหนดเองที่เรียกว่าอย่างอื่นที่ไม่ใช่ makefile ได้โดยใช้ตัวเลือก -f ตัวอย่างเช่น หากคุณมี makefile สำรองชื่อ makefile.bak คุณอาจระบุโดยเรียกใช้ make -f makefile.bak จากบรรทัดคำสั่ง คุณสามารถแทนที่ makefile.bak ด้วยชื่อไฟล์ใดก็ได้ และคุณสามารถรวมตัวเลือก -i หากคุณต้องการละเว้นข้อผิดพลาดใน makefile แบบกำหนดเองหรือที่ล้าสมัยในขณะที่คอมไพเลอร์กำลังทำงาน โดยปกติไม่แนะนำ เนื่องจากคุณอาจต้องการแก้ไข makefile ของคุณหากมีสิ่งผิดปกติเกิดขึ้น
กรณีการใช้งานที่เกี่ยวข้องอย่างใกล้ชิดอื่น ๆ เกี่ยวข้องกับสถานการณ์ที่มีความละเอียดอ่อนของตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เป็นปัญหา ต่อไปนี้คือไฟล์ที่แยกจากกันทั้งหมดในวิธีการทำธุรกิจของ Unix:
- Makefile
- makefile
- makeFile
- สร้างไฟล์
- MakefilE
โปรแกรมที่กำหนดค่าแบบกำหนดเองอาจไม่รู้จัก makefile ที่มีอักษรตัวพิมพ์ใหญ่คี่ หากคุณได้เขียนมันด้วยลายมือสำหรับโครงการเขียนโค้ดที่คุณกำลังทำงานอยู่ คุณอาจต้องการเปลี่ยนชื่อมัน makefile แม้ว่าคุณจะสามารถใช้ตัวเลือก -i เพื่อให้แน่ใจว่า GNU make สามารถค้นหาได้ โปรดจำไว้ว่า หากคุณเขียนทุกอย่างถูกต้องแล้ว คุณยังสามารถเรียกใช้ ./configure จากโปรเจ็กต์ของคุณเองเพื่อบังคับให้สร้างสภาพแวดล้อมที่เหมาะสมและหลีกเลี่ยงปัญหานี้ได้ตั้งแต่ต้น