Cụm tính toán của chúng tôi chạy một phiên bản CentOS rất cũ, với Kernel cũ (2.6,18) và, tất nhiên, các lib và nhị phân cũ. Bởi vì việc cập nhật toàn bộ yêu cầu rất nhiều công việc trên tất cả các nút, đây không phải là một tùy chọn.
Tôi đang cố gắng biên dịch và sử dụng một chương trình yêu cầu C++11
và do đó các phiên bản mới hơn của gcc
(và / hoặc clang
). Bởi vì tôi không muốn làm phiền hệ thống, tôi muốn làm điều này với tư cách là người dùng không root trong một số cây thư mục cục bộ.
Vấn đề là, điều đó gcc
đòi hỏi một cái mới glibc
hơn cái hiện diện trên (các) máy. Do đó, tôi cần duy trì một phiên bản mới hơn, riêng biệt hơn glibc
trong lib/
cây cục bộ của mình , có lẽ như được mô tả ở đây .
Nơi tôi bị mất là, làm thế nào để tôi "mã hóa cứng" các đường dẫn của libs cục bộ của tôi vào tất cả các nhị phân cần thiết gcc
, g++
v.v. , v.v.? Đặt LD_LIBRARY_PATH cho lib/
cây cục bộ của tôi khiến tất cả các nhị phân hệ thống không hoạt động nữa ( ELF file OS ABI invalid
) vì chúng muốn sử dụng cái mới libm.so
/ libc.so
mà chúng chưa được biên dịch.
Vì vậy, để kết thúc nó: cách thích hợp để duy trì một ngăn xếp phát triển cục bộ mới hơn (chứa glibc
, gcc
v.v.) song song với một hệ thống cũ mà không gây rối như root?
Như một câu hỏi phụ: Đặt LD_LIBRARY_PATH được đăng dưới dạng giải pháp trên toàn SE khi được tách riêng glibc
. Đối với tôi, nó gây ra các lỗi ở trên khi tôi cố gắng thực hiện bất kỳ hệ thống nhị phân nào (như ls
). Làm thế nào mà? Tôi đã làm điều gì sai hay đây là hành vi dự định?