Несколько библиотек glibc на одном хосте

В общем случае компактность предпочтительнее repairDatabase. Но одно преимущество ремонта по сравнению с компактным - вы можете выполнить ремонт всего кластера. компактный, вам нужно входить в каждый осколок, что раздражает.

142
задан dogbane 11 May 2009 в 08:20
поделиться

3 ответа

Очень возможно иметь несколько версий glibc в одной системе (мы делаем это каждый день).

Однако вам нужно знать, что glibc состоит из многих частей (200+ разделяемые библиотеки), которые все должны совпадать. Одна из частей - ld-linux.so.2, и она должна соответствовать libc.so.6, иначе вы увидите ошибки, которые видите.

Абсолютный путь к ld-linux .so.2 жестко запрограммирован в исполняемый файл во время компоновки и не может быть легко изменен после того, как ссылка установлена.

Чтобы создать исполняемый файл, который будет работать с новой glibc, сделайте следующее:

g++ main.o -o myapp ... \
   -Wl,--rpath=/path/to/newglibc \
   -Wl,--dynamic-linker=/path/to/newglibc/ld-linux.so.2

-rpath параметр компоновщика заставит загрузчик времени выполнения искать библиотеки в / path / to / newglibc (поэтому вам не нужно будет устанавливать LD_LIBRARY_PATH перед его запуском) , а параметр -dynamic-linker будет "

212
ответ дан 23 November 2019 в 21:55
поделиться

Если вы внимательно посмотрите на второй вывод, вы увидите, что используется новое расположение для библиотек. Возможно, все еще отсутствуют библиотеки, которые являются частью glibc.

Я также думаю, что все библиотеки, используемые вашей программой, должны быть скомпилированы для этой версии glibc. Если у вас есть доступ к исходному коду программы, новая компиляция будет лучшим решением.

1
ответ дан 23 November 2019 в 21:55
поделиться

Использовать LD_PRELOAD: поместите свою библиотеку где-нибудь из каталогов man lib и запустите:

LD_PRELOAD='mylibc.so anotherlib.so' program

См .: статья в Википедии

18
ответ дан 23 November 2019 в 21:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: