W naszym klastrze obliczeniowym działa bardzo stara wersja CentOS, ze starym jądrem (2.6.18) i, oczywiście, starymi bibliotekami lib i binariami. Ponieważ aktualizacja całości wymaga dużo pracy na wszystkich węzłach, nie jest to opcja.
Próbuję skompilować i użyć programu, który wymaga, C++11
a zatem nowszych wersji gcc
(i / lub clang
). Ponieważ nie chcę w ogóle bawić się z systemem, chcę to zrobić jako użytkownik inny niż root w lokalnym drzewie katalogów.
Problem polega na tym, że gcc
wymaga nowszej wersji glibc
niż ta, która jest obecna na maszynie (maszynach). Dlatego muszę zachować osobną, nowszą wersję glibc
w moim lokalnym lib/
drzewie, prawdopodobnie tak, jak opisano tutaj .
Gdzie jestem zgubiony, to jak mogę „na sztywno” ścieżkach moich lokalnymi bibliotekami na wszystkie wymagane pliki binarne, to znaczy gcc
, g++
itd.? Ustawienie LD_LIBRARY_PATH dla mojego lokalnego lib/
drzewa powoduje, że wszystkie systemowe pliki binarne przestają działać ( ELF file OS ABI invalid
), ponieważ chcą użyć mojego nowego libm.so
/, libc.so
dla którego nie zostały skompilowane.
Tak więc, aby owinąć go: Co to jest właściwy sposób, aby utrzymać nowszą, lokalny stos rozwoju (zawierający glibc
, gcc
itp) Równolegle do starego systemu bez aprowizacji jako root?
Jako pytanie poboczne: ustawienie LD_LIBRARY_PATH jest publikowane jako rozwiązanie w całej SE, jeśli chodzi o oddzielne glibc
. Dla mnie powoduje powyższe błędy, gdy próbuję wykonać dowolny systemowy plik binarny (jak ls
). Dlaczego? Czy zrobiłem coś złego, czy jest to zamierzone zachowanie?