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++11e 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 gccrichiede una versione più recente glibcdi quella presente sulle macchine. Quindi, devo mantenere una versione separata e più recente del glibcmio 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.socontro il quale non sono stati compilati.
Quindi, per concludere: qual è il modo corretto di mantenere un nuovo stack di sviluppo locale (contenente glibc, gccecc.) 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?