Nenhum tal arquivo ou diretório quando o arquivo existe

1

Eu tenho um arquivo chamado bitcoind em / usr / bin / bitcoind:

bitcoin@Titan:~$ ll /usr/bin | grep bitcoind
-rwxr-xr-x  1 bitcoin bitcoin 7789600 Nov 25 10:39 bitcoind*

No entanto, não posso executá-lo:

bitcoin@Titan:~$ bitcoind
-bash: /usr/bin/bitcoind: No such file or directory

sudo não ajuda:

bitcoin@Titan:~$ sudo bitcoind
sudo: unable to execute /usr/bin/bitcoind: No such file or directory

Encontrei a sugestão de que é porque falta algumas bibliotecas necessárias, então tentei usar 'ldd' para encontrá-las:

bitcoin@Titan:~$ ldd /usr/bin/bitcoin
ldd: /usr/bin/bitcoin: No such file or directory
    
por Benedict Lewis 25.11.2014 / 16:51

1 resposta

1

Você tenta executar um executável de 32 bits em um sistema de 64 bits. Isso não é um problema, mas você precisa de alguns pacotes no seu sistema para poder fazer isso.

Adicione a arquitetura de 32 bits à biblioteca de pacotes:

sudo dpkg --add-architecture i386

Atualize o cache do pacote:

sudo apt-get update

E instale os pacotes necessários:

sudo apt-get install libc6:i386 libstdc++6:i386 libncurses5:i386 

Depois disso, você poderá executar o executável de 32 bits.

Um pouco de fundo:

ldd retorna not a dynamic executable porque não é um executável de 64 bits, portanto, não é um executável dinâmico de 64 bits. Para executar um objeto shaed de 64 bits, como seu executável, deve haver um vinculador dinâmico: o carregador de Linux . Normalmente, ele reside em /lib . Em sistemas Linux de 64 bits com um vinculador de 32 bits, há dois vinculador / carregador: O carregador de 32 bits em /lib32/ld-linux.so e o carregador de 64 bits em /lib64/ld-linux.so . Um executável de 32 bits precisa de bibliotecas de 32 bits, portanto, seu executável pode precisar de mais algumas bibliotecas. Instale-os em sistemas baseados no Debian com apt-get install libxyz:i386 .

    
por 25.11.2014 / 20:39