คำถามติดแท็ก make

สำหรับคำถามที่เกี่ยวข้องกับการทำโปรแกรมอรรถประโยชน์ที่สร้างกระบวนการสร้างโดยอัตโนมัติโดยการจัดการการอ้างอิงระหว่างเป้าหมาย ใช้แท็กนี้สำหรับคำถามเกี่ยวกับสร้างเองหรือคำถามเกี่ยวกับปัญหาที่เกิดขึ้นจากการใช้ยูทิลิตี make-line ของบรรทัดคำสั่ง

3
วิธีแสดงการขึ้นต่อกันที่กำหนดใน makefile เป็นแผนผัง
ปัญหา ฉันต้องการดูการอ้างอิงสำหรับหนึ่งหรือมากกว่าหนึ่งเป้าหมายของ makefile ดังนั้นฉันกำลังมองหาโปรแกรมที่สามารถแยกวิเคราะห์ makefiles แล้วจะแสดงการอ้างอิงในรูปแบบต้นไม้บางอย่าง (เยื้อง, ascii-art, ... ) หรือเป็นกราฟ (dot, ... ) คล้ายคลึงกัน มีโปรแกรมที่ทำสิ่งนี้สำหรับสถานการณ์อื่น ๆ : pactreeหรือcashreeสามารถแสดงการขึ้นต่อกันของชุดซอฟต์แวร์ในรูปแบบตามลำดับในแผนผังเช่นรูปแบบ ascii หรือเป็นdotกราฟ gcc -M source_file.c แสดงการขึ้นต่อกันของไฟล์ต้นฉบับ C เป็นกฎการสร้าง pstreeแสดงการเป็นตัวแทน ASCII ของต้นไม้กระบวนการ ความคืบหน้า ค้นหาเว็บที่ผมพบความช่วยเหลือเล็ก ๆ น้อย ๆ นั่นทำให้ฉันต้องลอง make --always-make --silent --dry-run some_target | \ grep --extended-regexp 'Considering target file|Trying rule prerequisite' …

4
ทำไมคนแนะนำตัวเลือก -j3 สำหรับทำเมื่อมี CPU แบบดูอัลคอร์?
ใน Gentoo Linux เป็นไปได้ที่จะตั้งค่าMAKEOPTSตัวแปร/etc/portage/make.confเพื่อบอกmakeจำนวนงานที่ควรทำงานแบบขนานเมื่อสร้างแพ็คเกจ เนื่องจากฉันมีซีพียูแบบดูอัลคอร์ฉันจึงเลือกใช้-j2ตัวเลือกอย่างไร้เดียงสา: หนึ่งงานต่อคอร์ดังนั้นทั้งคู่จึงมีงานต้องทำ "ปัญหา" มีการอ้างอิงจำนวนมากที่บอกให้ผู้ใช้มี CPU แบบดูอัลคอร์เพื่อตั้งค่า-j3ตัวเลือกแทน บางส่วนของพวกเขาคือ: คู่มือ Gentoo Gentoo wiki make.conf (5) หน้าคน ตัวอย่างเช่นคู่มือ Gentoo พูดว่า: ทางเลือกที่ดีคือจำนวนของ CPU (หรือแกนประมวลผล CPU) ในระบบของคุณบวกหนึ่ง แต่แนวทางนี้อาจไม่สมบูรณ์แบบเสมอไป แต่เหตุผลสำหรับกฎ "CPUs + 1" คืออะไร ทำไมต้องมีงานพิเศษ make.conf (5) หน้าคนพูดถึง: การตั้งค่าที่แนะนำอยู่ระหว่าง CPU + 1 และ 2 * CPUs + 1 ฉันยังอ่านหัวข้อ 5.4 (การเรียกใช้งานแบบขนาน) ในmakeหน้าข้อมูลและmakeคำอธิบายหน้า …
18 gentoo  make 

1
ทำรายการเป้าหมายทั้งหมดอย่างไร?
สมมติว่าคุณมีโครงสร้างโครงการที่มี Makefiles จำนวนมากและมี Makefile ระดับบนสุดที่มีโครงสร้างอื่นทั้งหมด คุณจะระบุเป้าหมายที่เป็นไปได้ทั้งหมดได้อย่างไร ฉันรู้ว่าการเขียน make จากนั้นการแท็บเพื่อรับข้อเสนอแนะโดยทั่วไปจะทำเคล็ดลับ แต่ในกรณีของฉันมีเป้าหมาย 10,000 เป้าหมาย การทำเช่นนี้จะส่งผ่านผลลัพธ์มากกว่าและด้วยเหตุผลบางประการในการเลื่อนรายการผลลัพธ์ในการตรึง มีวิธีอื่นอีกไหม?
18 make 

2
.PHONY กฎทั้งหมดใน GNU ทำไฟล์หรือไม่
ฉันผิดในการตีความของฉันที่ฉันควรจะวางก่อนก่อนกฎทั้งหมด: .PHONY: all of my rules all: echo "Executing all ..." of: echo "Executing of ..." my: echo "Executing my ..." rules: echo "Executing rules ..." เคยมีกรณีที่คุณไม่ต้องการทำตาม 'สูตร' นี้หรือไม่? http://www.gnu.org/software/make/manual/make.html#Phony-Targets
18 make 

2
วิธีรวมไฟล์ส่วนหัวในเครื่องในโมดูลเคอร์เนลของ linux
ว่าฉันมีโมดูลที่mymodมีไฟล์ต้นฉบับดังนี้ src / mod / mymod.c src / inc / mymod.h ฉันพยายามที่จะรวม mymod.h ดังต่อไปนี้ #include <mymod.h> makefile ของฉันมีEXTRA_CFLAGS= -I$(shell pwd)/../inc/แต่เมื่อเคอร์เนลทำฉันได้รับข้อผิดพลาดที่ระบุ: ไม่พบ mymod.h เหตุผลน่าจะเป็นที่เมื่อโมดูลเคอร์เนลทำคำสั่งนี้ได้รับการเรียกใช้จาก makefile: (ใช้makeV1): make -C <path/to/linux/src> M=<path/to/mymod> modules ในผลงานอื่น ๆ ของฉัน$(shell pwd)Got <path/to/linux>ขยายไป นี่ไม่ใช่สิ่งที่ฉันต้องการ ฉันจะระบุ-Iพารามิเตอร์ให้ชี้ไปที่แผนภูมิต้นไม้src/incของฉันได้mymodอย่างไร
17 linux  kernel  compiling  make 

5
สิ่งที่อาจทำให้เกิดการแขวนเมื่อรวบรวมในหลายแกน
เมื่อวานฉันพยายามรวบรวมแพ็คเกจROOTจากแหล่งที่มา ตั้งแต่ผมได้รับการรวบรวมไว้ในเครื่องมอนสเตอร์ 6 make -j 6หลักฉันตัดสินใจที่จะไปข้างหน้าและสร้างโดยใช้หลายแกนใช้ การคอมไพล์นั้นราบรื่นและเร็วมากในตอนแรก แต่ในบางจุดmakeใช้ CPU 100% เพียงแกนเดียว ฉันทำ Google และพบโพสต์นี้บนกระดานข้อความ ROOT เนื่องจากฉันสร้างคอมพิวเตอร์เครื่องนี้ขึ้นมาเองฉันจึงกังวลว่าฉันไม่ได้ใช้ฮีทซิงค์อย่างถูกต้องและ CPU นั้นร้อนเกินไปหรือมีอะไรบางอย่าง น่าเสียดายที่ฉันไม่มีตู้เย็นในที่ทำงานที่ฉันสามารถติดมันได้ค่ะ ;-) ฉันติดตั้งlm-sensorsแพคเกจและวิ่งmake -j 6อีกครั้งคราวนี้ตรวจสอบอุณหภูมิของ CPU แม้ว่าจะสูง (ใกล้ถึง 60 C) แต่ก็ไม่เคยผ่านอุณหภูมิสูงหรือวิกฤต ฉันพยายามวิ่งmake -j 4แต่makeบางครั้งก็หยุดทำงานในระหว่างการรวบรวมคราวนี้ในจุดที่ต่างออกไป ในที่สุดฉันก็รวบรวมทำงานmakeและก็ทำงานได้ดี คำถามของฉันคือทำไมมันแขวนอยู่ เนื่องจากความจริงที่ว่ามันหยุดที่จุดที่แตกต่างกันสองจุดฉันจะเดาว่ามันเป็นเพราะสภาพการแข่งขันบางอย่าง แต่ฉันคิดว่าmakeควรฉลาดพอที่จะรับทุกอย่างในลำดับที่ถูกต้องเนื่องจากมันมี-jตัวเลือก
17 linux  compiling  make 

3
ข้อแตกต่างระหว่าง“ make install” และ“ sudo make install”
บางครั้งฉันพบปัญหาในการใช้make installซึ่งทำให้ฉันมีpermission deniedข้อผิดพลาดเมื่อเขียนไปยังบางโฟลเดอร์ sudo make installดังนั้นการใช้สัญชาตญาณผม สิ่งนี้จะนำเสนอปัญหาเพิ่มเติมหรือไม่ ฉันใช้ Debian Etch

5
เปรียบเทียบไฟล์กำหนดค่าเคอร์เนลสองไฟล์จากเปอร์สเปคทีฟของ menuconfig หรือไม่
ฉันมีสถานการณ์ที่ฉันมีไฟล์กำหนดค่าเคอร์เนลสองไฟล์ (สำหรับเคอร์เนลแหล่งเดียวกัน) ทั้งสองอย่างมีส่วนหนึ่งของฟังก์ชั่นที่ฉันต้องการ (ที่หนึ่ง, USB ทำงานอย่างถูกต้อง, ที่อื่น ๆ , I2C ที่สอง) ฉันรู้ว่าความแตกต่างระหว่างสองไฟล์ปรับแต่งจากมุมมองของ menuconfig นั้นมีเพียงไม่กี่ตัวเลือกที่เลือก (แต่ไม่รู้ว่าอันไหน) อย่างไรก็ตามเมื่อเปรียบเทียบไฟล์กำหนดค่าด้วยตนเอง (รวมอยู่ระหว่างไฟล์. config สองไฟล์) ความแตกต่างนั้นไม่สามารถระบุได้ง่าย ฉันพยายามรวมเข้าด้วยกันโดยไม่สำเร็จ ฉันแน่ใจว่าฉันจะประสบความสำเร็จในที่สุด แต่เชื่อว่ากระบวนการอาจไม่เจ็บปวดมากกว่านี้หากเปรียบเทียบไฟล์ในลักษณะที่ปรากฏในเมนู Menuconfig สามารถทำได้และถ้าเป็นเช่นนั้นได้อย่างไร

2
ทำไมไดเรกทอรีปัจจุบันไม่เปลี่ยนแปลงใน makefile
ฉันพยายามที่จะเรียกใช้cdสคริปต์ง่ายๆที่เก็บ git ลงในไดเรกทอรีหนึ่งแล้วไปที่ไดเรกทอรีนี้เพื่อดำเนินการสคริปต์การติดตั้ง สคริปต์นี้อยู่ใน Makefile แต่cdดูเหมือนว่าจะไม่ทำงาน ไม่พบสคริปต์การติดตั้งของฉัน ฉันเพิ่ม pwd หลังจากcdในสคริปต์และมันแสดงให้ฉันเห็นไดเรกทอรีจากที่ฉันกำลังรันสคริปต์ไม่ใช่ไดเรกทอรีที่ฉันcdเข้า มีปัญหาอะไร? git clone http://somerepo ~/some_dir cd ~/some_dir/ pwd python myscript.py install => pwd: /hereIsPathToDirectoryFromWhichIRunTheScript หลาม: ไม่สามารถเปิดไฟล์ 'setup.py': [Errno 2] ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว ./setup.pyนอกจากนี้ยังไม่ได้ทำงานกับ หากฉันเข้าสู่เส้นทางที่แน่นอน~/some_dir/setup.pyสคริปต์จะล้มเหลวในภายหลังเนื่องจากพยายามเข้าถึงทรัพยากรในโฟลเดอร์เดียวกัน
14 make  cd-command 

1
วิธีแก้ไข“ การข้าม /usr/lib/libc.a ที่เข้ากันไม่ได้”
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามสร้างเป้าหมาย Linux ที่ฝังอยู่ใน 64 บิต Fedora 16 (Verne): make[3]: Entering directory `/export/home/git/minerva-5.x/third_party/multifiles' mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o md5.o md5.c mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o bitmapfs.o bitmapfs.c mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o mfcln.o mfcln.c mips-linux-gnu-gcc -EL -Wl,-rpath /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/lib -L/export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/lib …
13 fedora  make  glibc 

2
จำลองการทำงานของ "make install" - ยูทิลิตี้ "dry run" หรือโปรแกรมจำลองสถานการณ์หรือไม่?
มีวิธีการทั่วไปในการใช้งานสคริปต์ทุบตีและดูคำสั่งที่เป็นผลลัพธ์ แต่ไม่ได้เรียกใช้คำสั่งจริง - นั่นคือ "dry run" / โปรแกรมจำลองการเรียงลำดับหรือไม่? ฉันมีสคริปต์ติดตั้งฐานข้อมูล (จริง ๆ แล้ว "ทำการติดตั้ง" หลังจากใช้งาน. / กำหนดค่าและสร้าง) ที่ฉันต้องการเรียกใช้ แต่มันติดตั้งทุกประเภทของสิ่งที่ฉันไม่ต้องการ ดังนั้นฉันต้องการวิธีที่จะดูว่าสิ่งที่จะทำก่อนที่ฉันจะเรียกใช้มันจริง - แม้กระทั่งเรียกใช้คำสั่งด้วยมือแทน มียูทิลิตี้ใดบ้างที่สามารถทำงานดังกล่าวได้ (หรืออะไรก็ตามที่เกี่ยวข้อง / คล้ายกัน)?

2
`ทำให้ -j '(ไม่มีข้อโต้แย้ง) เป็นอันตรายหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ก่อนหน้านี้ในวันนี้เมื่อมีการสร้างสิ่งที่ฉันตัดสินใจที่จะทำงานmakeเป็น $ make -j บางทีอาจจะออกมาจากนิสัยกับโปรแกรมอื่น ๆ เช่นcabalที่-jเริ่มต้นที่วงเงินที่เหมาะสม ประมาณ 20 วินาทีต่อมาสก์ท็อปของฉันทั้งหมด grinds ต้องหยุดชะงัก ฉันมองหาสัญญาณต่าง ๆ ของกิจกรรม ไม่มีแฟน ๆ ปั่น ไฟ HDD เป็นสีเขียวค้าง แต่ฉันไม่ได้ยินการทำงานของดิสก์ hmmmmm หลังจากเงียบไป 10 นาทีในที่สุดฉันก็เห็นการตอบรับของปุ่มกดแรกที่ฉันทำเมื่อหลายปีก่อนและฉันก็เริ่มได้ยินเสียงที่คุ้นเคยของดิสก์อย่างรุนแรง 20 นาทีต่อมาเมื่อฉันพยายามที่จะลุยเข้าไปในอาคารที่ไม่ตอบสนองฉันก็เลยยุบและใช้ REISUB ตอนแรกฉันคิดว่าแอปพลิเคชันเดสก์ท็อปที่ไม่เกี่ยวข้องจะต้องเป็นผู้ร้ายเพราะฉันมีหน่วยความจำที่ จำกัด ในเซสชันทุบตีแบบโต้ตอบเพื่อป้องกันไม่ให้ฉันใส่ตัวเองลงในสถานการณ์เช่นนี้! แต่/var/log/syslogบอกเล่าเรื่องราวที่แตกต่าง; นักฆ่า OOM ทิ้งบางส่วนpsทิ้งซึ่งมีพิรุธเต็มไปด้วยc++และcc1plusกระบวนการ! นี่คือการวิเคราะห์ความถี่ของการทิ้งหนึ่งในนั้น: Command Number of appearances 'sh' 322 …

1
ข้อผิดพลาด GCC พยายาม exec 'cc1'
ฉันกำลังคอมไพล์เคอร์เนล Linux สำหรับ Raspberry Pi ของฉันบนแล็ปท็อป (รันเดเบียน 7) (ทำตามคำแนะนำในRaspberry Pi Kernel Compilation ); แต่เมื่อรวบรวมด้วย make ARCH=arm CROSS_COMPILE=${CCPREFIX} ฉันได้รับข้อความต่อไปนี้: CHK include/linux/version.h CHK include/generated/utsrelease.h make[1]: `include/generated/mach-types.h' is up to date. CC kernel/bounds.s gcc: error trying to exec 'cc1': execvp: No such file or directory make[1]: *** [kernel/bounds.s] Error 1 make: *** [prepare0] …

2
ข้อผิดพลาด“ ไม่มีเป้าหมาย” โดยใช้ Make
ฉันเรียนรู้วิธีใช้makeและสร้างไฟล์ดังนั้นฉันจึงเขียนไฟล์เล็ก ๆ นี้: %.markdown: %.html pandoc -o $< $@ แต่เมื่อฉันวิ่งmakeสิ่งที่ฉันได้รับคือmake: *** No targets. Stop.สิ่งที่เกิดขึ้น?
12 make 

3
ฉันจะแก้ไข“ make: ไม่มีกฎที่จะทำให้เป้าหมาย `config '” ได้อย่างไร [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา เมื่อฉันพิมพ์make configในเทอร์มินัลระบบตอบกลับด้วย: make: *** No rule to make target `config'. Stop. มีความคิดว่าจะแก้ไขปัญหาอย่างไร
12 make 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.