Problemas com executável: arquivo não encontrado depois de usar o chmod para corrigir permissões [duplicado]

2

Eu fiz o download e extraí o binário do Linux para o planejador de PDDL de caixa preta , e eu m tentando obter o arquivo blackbox para executar. Eu mudei para o diretório com o arquivo e tentei ./blackbox , o que me deu um erro de permissão. Não é grande coisa, basta executar chmod 755 blackbox para dar permissões executáveis. Mas então, quando tento ./blackbox novamente, recebo o seguinte erro:

bash: ./blackbox: No such file or directory

Ele faz o mesmo quando eu dou os argumentos do comando. No entanto, quando executo ls -l , vejo o arquivo blackbox e ele tem -rwxr-xr-x de permissões, por isso não sei por que ele está "perdendo" o arquivo.

Estou executando o Ubuntu 14.04 como uma inicialização dupla com o Windows 7, se isso for importante.

EDIT: Encontrei um

por wlyles 23.04.2015 / 17:35

1 resposta

1

Acontece que o executável blackbox era um programa de 32 bits e estou executando um sistema operacional de 64 bits. Aqui estão os passos (um pouco hacky) que tomei para resolver este problema (parcialmente narrado em esta pergunta no superusuário ):

  • uname -m me disse que eu tenho um sistema operacional de 64 bits, mas file blackbox me disse que esse exe era de 32 bits.
  • ldd blackbox (estranhamente) me disse que o arquivo não era um executável dinâmico, mesmo que eu também tenha visto isso de file . A tentativa de readelf -l ./blackbox | grep ld-linux me contou [Requesting program interpreter: /lib/ld-linux.so.2] , que era uma biblioteca compartilhada que eu não tinha naquele local.
  • sudo apt-get install libc6-i386 para obter esse arquivo de biblioteca (descobriu que com uma pesquisa de pacotes em packages.ubuntu.com ).
  • Agora ldd me deu a saída e estava faltando libstdc++.so.6 e libgcc_s.so.1 (veja minha edição), então eu precisava desses arquivos.
  • Depois de pesquisar um pouco mais de pacakage, descobri que o pacote gcc-snapshot tinha os dois arquivos que faltavam. Este é provavelmente um enorme martelo para minha unha pequena, e provavelmente há melhores soluções, mas sudo apt-get install gcc-snapshot me deu os arquivos que eu precisava.
  • Depois de executar ldd novamente, isso resolveu o problema com libgcc_s.so.1 , mas libstdc++.so.6 ainda não foi encontrado. Acabei indo para o local em que ldd encontrou libgcc_s.so.1 e executando sudo ln -s /usr/lib/gcc-snapshot/lib32/libstdc++.so.6 libstdc++.so.6 para obter um link simbólico para o arquivo instalado recentemente.
por wlyles 23.04.2015 / 21:19