Переопределение библиотек Linux для исторических инструментов только для двоичного файла

У меня есть поле Ubuntu Linux на 64 бита. Недавно мне дали старый скомпилированный двоичный файл, который раньше работал на старом, сервере на пенсии, который я ДУМАЮ, было распределение Redhat с 2007 эрами.

Как Вы могли бы ожидать, двоичный файл не работает из-за несовместимостей библиотеки. Только для двоичного файла сосет и не ПРЕДНАЗНАЧЕН, чтобы быть портативным. Все же я все еще застреваю только с двоичным файлом и потребностью выполнить его. Таким образом, мой вопрос становится, как иметь дело с (болезненной) проблемой расчета, какие библиотеки двоичный файл ожидает, находя те библиотеки, и вынуждая программу использовать их. Какова надлежащая стратегия того, чтобы сделать это?

Я дам Вам определенный пример своего двоичного файла, который работает, но сразу перестал работать с сообщением об ошибке

datab2txt: relocation error: /lib64/libnss_files.so.2: symbol __rawmemchr, version GLIBC_2.2.5 not defined in file libc.so.6 with link time reference

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

Какова лучшая стратегия решения этого? Я предполагаю, что должен определить необходимые библиотеки (как?), найдите их и вынудите программу использовать их (как? переопределение LD_LIBRARY_PATH?)

Спасибо!

Править: использование ldd datab2txt дает ошибку not a dynamic executable. Uhoh.. что это означает?

Кроме того, я петлял и добрался:

% file datab2txt

datab2txt: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.4.0, not stripped
2
задан 28.09.2015, 14:28

2 ответа

Идентификация библиотек, покончили ldd. Нахождение их является другой проблемой, но попыткой, роющей вокруг на packages.ubuntu.com для более старых релизов Ubuntu. Затем Вы смотрите на распаковку пакетов вручную и установку общих объектов в их собственный специализированный каталог (или дерево каталогов в случае необходимости) и использование LD_LIBRARY_PATH указать им. (Отметьте: использование apt-get или dpkg не будет работать, и при попытке вызвать проблему, Вы могли бы повредить свою систему. Просто не делайте.)

0
ответ дан 12.12.2019, 07:00

Вы находитесь в удаче, существует команда для обнаружения, в каких библиотеках двоичный файл нужен с ожидаемыми версиями:

ldd -v /path/to/binary
0
ответ дан 12.12.2019, 07:00

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

0
ответ дан 12.12.2019, 07:00

Теги

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