คลัสเตอร์การคำนวณของเรารัน CentOS เวอร์ชันเก่ามากโดยมีเคอร์เนลเก่า (2.6.18) และแน่นอน libs เก่าและไบนารี เนื่องจากการอัปเดตสิ่งทั้งหมดต้องการงานจำนวนมากบนโหนดทั้งหมดนี่ไม่ใช่ตัวเลือก
ฉันกำลังพยายามรวบรวมและใช้โปรแกรมที่ต้องการC++11
และดังนั้นรุ่นที่ใหม่กว่าของgcc
(และ / หรือclang
) เนื่องจากฉันไม่ต้องการยุ่งกับระบบเลยฉันต้องการทำสิ่งนี้ในฐานะผู้ใช้ที่ไม่ใช่รูทในทรีไดเรกทอรีในเครื่อง
ปัญหาคือที่gcc
ต้องใหม่glibc
กว่าที่มีอยู่ในเครื่อง ดังนั้นผมจำเป็นต้องรักษาแยกรุ่นใหม่glibc
ในท้องถิ่นของฉันlib/
ต้นไม้อาจจะเป็นตามที่อธิบายไว้ที่นี่
ที่ฉันหายไปคือวิธีการทำผม "ฝัง" เส้นทางของ libs ท้องถิ่นของฉันในทุกไบนารีที่จำเป็นเช่นgcc
, g++
ฯลฯ ? การตั้งค่า LD_LIBRARY_PATH กับแผนผังโลคัลของฉันlib/
ทำให้ไบนารีระบบทั้งหมดไม่ทำงานอีกต่อไป ( ELF file OS ABI invalid
) เพราะพวกเขาต้องการใช้ใหม่libm.so
/ libc.so
กับที่พวกเขายังไม่ได้รวบรวม
ดังนั้นเพื่อตัดมันขึ้น: อะไรคือวิธีการที่เหมาะสมในการรักษาใหม่กองพัฒนาท้องถิ่น (ที่มีglibc
, gcc
ฯลฯ ) ในแบบคู่ขนานกับระบบเก่าได้โดยไม่ต้อง messing รอบเป็นราก?
ตามคำถามด้านข้าง: การตั้งค่า LD_LIBRARY_PATH จะโพสต์เป็นโซลูชันทั่ว SE เมื่อแยกออกglibc
มา สำหรับฉันมันทำให้เกิดข้อผิดพลาดด้านบนเมื่อฉันพยายามรันไบนารีระบบใด ๆ (เช่นls
) มาทำไม ฉันทำอะไรผิดหรือเป็นพฤติกรรมที่ตั้งใจหรือไม่