Наш обчислювальний кластер виконує дуже стару версію 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). Як це? Я зробив щось не так або це задумана поведінка?