gentoo - ปิดการใช้งานบิลด์ขนานสำหรับ llvm


1

ฉันติดตั้ง Gentoo บนคอมพิวเตอร์ที่มี RAM ค่อนข้างน้อย (1 GB) เมื่อฉันติดตั้งllvm( emerge -a llvm) คอมพิวเตอร์จะไม่มีหน่วยความจำหมด cc1plusกระบวนการทั้งหมด 4 กระบวนการใช้ RAM ประมาณ 25% เมื่อระบบใช้ไม่ได้ ฉันคิดว่าการใช้เพียงหนึ่งกระบวนการในแต่ละครั้งอาจช่วยได้

ฉันจะรันllvmbuild (ใช้cmakeและninja) ด้วยกระบวนการคอมไพเลอร์เดียวได้อย่างไร


ปรับปรุง

ฉันพิมพ์ผิดในmake.conf:

#MAKEFAGS="-j3"
MAKEFAGS="-j1"

ฉันกำลังลองชุดตัวเลือกอื่น ๆ อีกมากมาย แต่ฉันจะเขียนในไม่กี่วัน (เนื่องจากการรวบรวมใช้เวลาหลายชั่วโมงและหากไม่มี RAM ให้ใช้ฉันต้องรีบูตโดยถอดปลั๊กออกแม้จะใช้ swap)

คำตอบ:


0

แม้ว่าninjaจะไม่เป็นmakeเช่นนั้น ebuild ควรรับรู้และเคารพ-jพารามิเตอร์ใด ๆ ที่ระบุในMAKEOPTSตัวแปรสภาพแวดล้อม MAKEOPTS=-j1นั่นหมายความว่าคุณควรจะสามารถที่จะบังคับให้สูงสุดหนึ่งงานผ่านทาง คุณสามารถทำได้เพียงครั้งเดียว:

MAKEOPTS=-j1 emerge -a llvm

นอกจากนี้คุณยังสามารถตั้งค่าการเปลี่ยนแปลงนี้ทั่วโลก / permenantly แพ็กเกจทั้งหมดในระบบของคุณโดยการแก้ไขเส้นMAKEOPTS=/etc/portage/make.conf

อย่างไรก็ตามหากคุณตั้งค่าMAKEOPTS=-j1ผ่านเชลล์หรือmake.confการตั้งค่าการขนานจะถูกนำไปใช้กับแพ็คเกจทั้งหมดที่emergeติดตั้ง หากคุณต้องการนำไปใช้กับแพ็คเกจเดียวคุณสามารถสร้างไฟล์ที่เรียกว่า/etc/portage/env/sys-devel/llvm(สร้างไดเรกทอรีที่ขาดหายไปหากจำเป็น) และวางเนื้อหาเหล่านี้ไว้ในนั้น:

MAKEOPTS=-j1

สิ่งนี้จะนำตัวแปรไปใช้กับแพ็คเกจ llvm เท่านั้น

วิธีทำในเชลล์:

mkdir -p /etc/portage/env/sys-devel
echo MAKEOPTS=-j1>>/etc/portage/env/sys-devel/llvm

นินจาและ MAKEOPTS

ใน Gentoo เนื่องจากผู้คนพึ่งพาMAKEOPTS=-j«n»การควบคุมจำนวนงาน eclasses และ ebuild ต่าง ๆ จะแมป-jพารามิเตอร์ของตัวแปรนี้ให้เทียบเท่ากับระบบการสร้าง acutal ที่ใช้งานอยู่ คุณสามารถดูสิ่งนี้ได้ในeclass/ninja-utils.eclass(ซึ่งใช้โดยcmake-utils.eclassที่ถูกใช้โดยllvm) ตัวอย่างนั้นแยก-jพารามิเตอร์และส่งผ่านไปninjaเพราะninjaสนับสนุนพารามิเตอร์นั้นในขณะที่อาจไม่รองรับสิ่งอื่น ๆ ที่ผู้คนเข้าMAKEOPTSมา

ข้อจำกัดความรับผิดชอบ: ฉันยังไม่ได้ทดสอบสิ่งนี้ด้วยllvmebuild ล่าสุด โปรดแสดงความคิดเห็นหากมีปัญหากับคำตอบนี้!


ดูอัปเดตคำตอบ :-(
jiwopene

@jiwopene อ่าฉันเข้าใจแล้ว ดังนั้นดูเหมือนว่าคุณกำลังพยายามที่จะใช้MAKEFLAGSจบลงด้วยการโทรโดยไม่ตั้งใจMAKEFAGSแทนและยังไม่ได้รับการสนับสนุนจาก envvars มันMAKEOPTS;-)
binki

ฉันกำลังรวบรวมอีกครั้งดังนั้นฉันจะหยุดมันและลองอีกครั้ง
jiwopene

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