Вы пытаетесь запустить 32-битный исполняемый файл в 64-битной системе. Это не проблема, но вам нужно несколько пакетов в вашей системе, чтобы сделать это.
Добавьте 32-битную архитектуру в библиотеку пакетов:
sudo dpkg --add-architecture i386
Обновите кеш пакета:
sudo apt-get update
И установите необходимые пакеты:
sudo apt-get install libc6:i386 libstdc++6:i386 libncurses5:i386
После этого вы сможете выполнить 32-битный исполняемый файл.
Немного предыстории:
ldd
возвращается, not a dynamic executable
потому что это не 64-битный исполняемый файл, следовательно, не 64-битный динамический исполняемый файл. Для выполнения 64-битного объекта shaed, такого как ваш исполняемый файл, должен быть динамический компоновщик: загрузчик linux . Обычно это проживает в /lib
. В 64-битных системах Linux с 32-битным компоновщиком есть два компоновщика / загрузчика: 32-битный загрузчик /lib32/ld-linux.so
и 64-битный загрузчик /lib64/ld-linux.so
. 32-битному исполняемому файлу нужны 32-битные библиотеки, поэтому вашему исполняемому файлу могут понадобиться еще несколько библиотек. Установите их в системах на основе Debian с apt-get install libxyz:i386
.