Есть очень древняя программа без исходников, скомпилированная под Linux ориентировочно в 2000-2003 годах. Вероятно компилировалась на RHL 7.3 Valhalla (не путать с RHEL 7, тогда ещё вообще RHEL’ов не было), возможно даже каким-то GCC 2.95:
prism.original: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped, too many notes (256)
Нужно запустить её на современной Ubuntu LTS.
При запуске ругается так:
prism: symbol lookup error: prism: undefined symbol: errno, version GLIBC_2.0
Погуглил, и нашёл что GNU’тые когда-то там на рубеже веков сломали API/ABI и этот errno
похоже что завернули в какие-то убермакросы и выкинули.
Извернулся, взял HEX-редактор и заменил несуществующий символ errno
на существующий srand
:
После такого наглого вмешательства программа запустилась и всё отлично работает, но напрягает такой выхлоп в консоль:
prism: Symbol `srand' has different size in shared object, consider re-linking
Как сделать по красоте и избавиться от этого предупреждения?
Сам файл программы: https://0x0.st/Xy0d.zip/prism.zip