Comportamento estranho do executável

3

Eu tenho uma máquina de servidor com o Ubuntu 9.10. Eu estou tentando colocar em prática um executável, que acaba por ser o mais recente flashplayer (versão do depurador).

De alguma forma, o arquivo aparece como presente e executável, mas ao iniciá-lo, o console indica que os arquivos não existem:

rodrigo@ns360773:~/t_fplayer$ pwd
/home/rodrigo/t_fplayer
rodrigo@ns360773:~/t_fplayer$ ls -lh
total 12M
-rwxr-xr-x 1 rodrigo rodrigo 12M 2011-07-09 11:35 flashplayerdebugger
rodrigo@ns360773:~/t_fplayer$ ./flashplayerdebugger
-bash: ./flashplayerdebugger: No such file or directory
rodrigo@ns360773:~/t_fplayer$ ldd flashplayerdebugger
       not a dynamic executable

usando o mesmo executável (copiado via ssh) na minha máquina local funciona bem.

Alguma ideia do que está acontecendo? O que pode explicar esse comportamento?

Alguma ideia de como corrigir isso?

    
por rodrigob 09.07.2011 / 23:42

3 respostas

6

Verifique a arquitetura: você receberá essa mensagem executando um binário x86 em um sistema AMD64 se não tiver bibliotecas de compatibilidade instaladas.

O Ubuntu 9.04 também não é mais atualizado, então você pode querer atualizá-lo.

    
por 10.07.2011 / 00:02
2

Estático ou dinâmico, ele ainda faz uso de um "interpretador" carregado dinamicamente, que no Linux é geralmente chamado de ld-linux.so.VERSION . Se você tem um executável que requer uma versão do interpretador que não está presente, como quando você tenta usar um binário mais novo em um sistema antigo, você receberá esse erro porque o intérprete não é encontrado. (E a mensagem de erro é infeliz, mas não corrigível, a menos que o kernel seja estendido com uma API de relatório de erros melhor; tudo que o shell sabe é que obteve ENOENT em resposta a execve("./flashplayerdebugger", ...) .) execute um binário compilado para o Ubuntu 11.x no seu servidor antigo, e essa é uma causa perdida - você precisará obter um compilado para o Ubuntu 9.10.

    
por 09.07.2011 / 23:53
0

Provavelmente isso ocorre devido a falta do ambiente de 32 bits. Você pode tentar usar strace para descobrir o que está faltando: strace ./flashplayerdebugger . Você deve ver alguns open () s para bibliotecas inexistentes.

    
por 10.07.2011 / 15:26