Наш обчислювальний кластер виконує дуже стару версію CentOS, зі старим ядром (2.6.18) і, звичайно, старими libs and binaries. Оскільки для оновлення всієї справи потрібна велика робота над усіма вузлами, це не варіант.
Я намагаюся скласти і використовувати програму, яка вимагає 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
т.д.) паралельно до старої системи , НЕ байдикували як корінь?
Як побічне запитання: налаштування LD_LIBRARY_PATH розміщується як рішення по всьому SE, коли мова йде про окремі glibc
. Для мене це спричиняє помилки вище, коли я намагаюся виконати будь-яку бінарну систему (наприклад ls
). Як це? Я зробив щось не так або це задумана поведінка?