Этот двоичный файл странен: он связан с использованием /lib/ld-
в качестве загрузчика динамического c.
32-разрядный загрузчик динамического c i386 обычно называется /lib/ld-linux.so.2
. Мы можем предположить, что ваш двоичный файл был каким-то образом поврежден.
В другом своем комментарии вы сказали, что двоичный файл не будет работать без strace
(поскольку /lib/ld-
не существует). Запуск двоичного файла под strace
может волшебным образом заставить двоичный файл работать.
Вы должны иметь возможность запустить его под strace
, используя явный вызов загрузчика:
strace -ff /lib/ld-linux.so.2 ./005f32fffe1da3bc100e7dcd8b2f8f2c
Обновление :
Я получаю некоторые системные вызовы, подобные этому:
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
stat64("/lib/i686/sse2", 0xffe9b300) = -1 ENOENT (No such file or directory)
+++ exited with 127 +++
Я не уверен, что это за системные вызовы?
Это динамический компоновщик c, пытающийся загрузить вашу программу и использующий access и stat64 системные вызовы.
как запустить следующий файл с помощью strace? Как узнать, какую библиотеку использовать в команде strace с параметром -ff на основе выходных данных файловой команды?
file mosquitto_pub
mosquitto_pub: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=7ced951dc3a859a6829feb46fd5cf757a6073361, not stripped
Это 64-разрядный двоичный файл с аналогичным повреждением /lib64/l
dynamici * Loader 1049 *.
Стандартный 64-разрядный загрузчик для GLIB C на x86-64
равен /lib64/ld-linux-x86-64.so.2
, поэтому вам нужна команда:
strace -ff /lib64/ld-linux-x86-64.so.2 ./mosquitto_pub