Il nostro cluster di calcolo esegue una versione molto vecchia di CentOS, con un vecchio kernel (2.6.18) e, naturalmente, vecchie librerie e binari. Poiché l'aggiornamento di tutto richiede molto lavoro su tutti i nodi, questa non è un'opzione.
Sto cercando di compilare e utilizzare un programma che richiede C++11
e quindi versioni più recenti di gcc
(e / o clang
). Dato che non voglio affatto scherzare con il sistema, voglio farlo come utente non root in un albero di directory locale.
Il problema è che gcc
richiede una versione più recente glibc
di quella presente sulle macchine. Quindi, devo mantenere una versione separata e più recente del glibc
mio lib/
albero locale , probabilmente come descritto qui .
Dove mi sono perso è, come faccio a "codificare" i percorsi delle mie librerie locali in tutti i binari richiesti, ad esempio gcc
, g++
ecc.? L'impostazione di LD_LIBRARY_PATH sul mio lib/
albero locale fa sì che tutti i binari di sistema non funzionino più ( ELF file OS ABI invalid
) perché vogliono usare il mio nuovo libm.so
/ libc.so
contro il quale non sono stati compilati.
Quindi, per concludere: qual è il modo corretto di mantenere un nuovo stack di sviluppo locale (contenente glibc
, gcc
ecc.) In parallelo a un vecchio sistema senza fare casino come root?
Come domanda a margine: l'impostazione di LD_LIBRARY_PATH viene pubblicata come soluzione in tutta SE quando si tratta di separare glibc
. Per me, causa gli errori sopra quando provo ad eseguire qualsiasi binario di sistema (come ls
). Come mai? Ho fatto qualcosa di sbagliato o è questo il comportamento previsto?