Digite
ldd ./trid
tanto no sistema openSuse quanto no Ubuntu.
Eu suspeito que você descobrirá que este último não possui um arquivo de biblioteca.
Hoje encontrei algo que me deixou perplexo. Um colega de trabalho está trabalhando com um binário pré-compilado específico que ele baixou (disponível aqui ). No Ubuntu 10.04 LTS Server em que ele está trabalhando, a tentativa de executar este arquivo produz arquivos não encontrados, mesmo com permissões definidas corretamente.
E ainda, quando eu tento fazer a mesma coisa com o OpenSUSE 11.4, ele funciona muito bem. A execução de file
me dá:
ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
As caixas Ubuntu e OpenSUSE são instalações de 64 bits e file
retorna as mesmas informações nas duas máquinas.
O que parece ótimo para mim. E na caixa opensuse, o LDD até me fornece uma pequena lista de arquivos de biblioteca. Verificação de mão, todos esses arquivos especificados também existem no servidor Ubuntu. A saída do Strace é diferente:
Opensuse:
execve("./trid", ["./trid"], [/* 122 vars */]) = 0
Ubuntu (o caminho completo não muda o resultado):
execve("./trid", ["./trid"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)
O que pode fazer com que um arquivo como este não seja executável dessa maneira?
Digite
ldd ./trid
tanto no sistema openSuse quanto no Ubuntu.
Eu suspeito que você descobrirá que este último não possui um arquivo de biblioteca.
Tags executable elf 64bit