У меня есть 64-битная версия Ubuntu Linux. Недавно мне дали старый скомпилированный бинарный файл, который использовался на старом удаленном сервере, который, я думаю, был дистрибутивом 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
. Ухх .. что это значит?
Кроме того, я запустил файл и получил:
% file datab2txt
datab2txt: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.4.0, not stripped