Eu tive um problema muito semelhante ao OP ( ./lfm: Command not found.
quando eu estava olhando bem para ele), e algumas das respostas aqui me ajudaram a descobrir como executar meu executável em um sistema diferente sem recompilar Eis como eu aconselharia o meu passado (se eu pensasse que o passado era inteligente o suficiente para ouvir uma mudança):
1) Verifique se o arquivo não é um link corrompido, se ele tem permissões executáveis e se você não está tentando executar um executável de 64 bits em um sistema operacional de 32 bits (para mim, file lfm
retornou lfm: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
, portanto, é de 64 bits; verifique a saída de uname -a
para x86_64
, para verificar se o SO também é de 64 bits; i386
ou i686
significa 32 bits) (substitua o seu nome do programa para lfm
nesses exemplos, é claro).
2) ldd lfm
retornou a mensagem not a dynamic executable
(em vez de imprimir as dependências da biblioteca compartilhada), então tente readelf -l ./lfm | grep ld-linux
para descobrir onde o executável espera encontrar o ld-linux, que é o carregador do linux para dinamicamente bibliotecas vinculadas (no meu caso, isso retornou [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
).
3) Verificar o diretório indicado pelo comando anterior mostra que o arquivo ld-linux indicado não está lá; copie-o da máquina em que o programa foi originalmente compilado (ou um sistema semelhante, se necessário) para esse diretório.
4) Tente executar o programa original novamente. (Trabalhou para mim.) Além disso, ldd ./lfm
deve funcionar agora (mas você sempre pode usar readelf -d ./lfm
para ver quais bibliotecas são necessárias e, em seguida, verificar se elas estão disponíveis.)