Seu erro é causado não por um objeto compartilhado ausente, mas por não ter o carregador dinâmico usado pelo aplicativo.
Se o carregador dinâmico não puder ser encontrado, exec()
devolve ENOENT
ao shell, o que significa a mensagem de erro que você recebe.
Se um carregador dinâmico for encontrado, exec()
será bem-sucedido e o carregador dinâmico terá a chance de imprimir uma mensagem informativa sobre um objeto compartilhado ausente, se for o caso.
Isso pode ser experimentado facilmente, ao knoblar um binário como ls
de maneiras diferentes:
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
Então, eu diria que seu Linux musl
-based é tão radical, que não apenas altera glibc
para outra coisa, mas também coloca o carregador dinâmico em um caminho não convencional, ou lhe dá um nome não convencional.