Ваша ошибка вызвана не отсутствием общего объекта, а тем, что приложение не использует динамический загрузчик .
Если динамический загрузчик не может быть найден, exec ()
возвращает ENOENT
оболочке, что переводится в сообщение об ошибке, которое вы получаете.
Если динамический загрузчик обнаружен, exec ()
завершается успешно, и динамический загрузчик имеет возможность распечатать информативное сообщение об отсутствующем общем объекте, если это необходимо.
Это можно легко проверить, изменив двоичный файл вроде ls
разными способами:
cd /tmp
cp $(which ls) .
sed -e 's/libc.so.6/BAD!.so.6/' <ls >ls2
sed -e 's/ld-linux/ha-hahah/' <ls >ls3
strace ./ls2
strace ./ls3
Итак, я бы сказал, что ваш Linux на основе musl
настолько радикален, что Он не только заменяет glibc
чем-то другим, но также помещает динамический загрузчик в нестандартный путь или дает ему нестандартное имя.