Keine solche Datei oder Verzeichnis, wenn eine Datei existiert

3909
Benedict Lewis

Ich habe eine Datei bitcoindin / usr / bin / bitcoind:

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

Ich kann es jedoch nicht ausführen:

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

sudo hilft nicht:

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

Ich habe den Vorschlag gefunden, dass einige Bibliotheken fehlen. Versuchen Sie 'ldd', um sie zu finden:

bitcoin@Titan:~$ ldd /usr/bin/bitcoin ldd: /usr/bin/bitcoin: No such file or directory 
1
Sind Sie sicher, dass der Dateiname keine versteckten Zeichen enthält? Bestätigen Sie mit `ls / usr / bin | grep bitcoind | xxd`. choroba vor 9 Jahren 0
"0000000: 6269 7463 6f69 6e64 0a Bitcoind" Benedict Lewis vor 9 Jahren 0
Der `ldd`-Aufruf verfehlt am Ende ein` d`. choroba vor 9 Jahren 1
Können Sie die Ausgabe von `file / usr / bin / bitcoind` und` uname -a` bereitstellen? chaos vor 9 Jahren 1
@choroba Der korrigierte `ldd'-Aufruf gibt 'nicht eine dynamische ausführbare Datei' zurück. Benedict Lewis vor 9 Jahren 0
@chaos `file` gibt` / usr / bin / bitcoind zurück: ELF-32-Bit-LSB-Shared-Objekt, Intel 80386, Version 1 (SYSV), dynamisch verknüpft (verwendet Shared Libs), für GNU / Linux 2.6.24, BuildID [sha1 ] = 41aded5bd1f93bef6c7972e3b0aa7f4c38098336, gestrippt ". "uname" gibt "Linux Titan 3.13.0-37-generic # 64-Ubuntu SMP" zurück. Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux`. Benedict Lewis vor 9 Jahren 0

1 Antwort auf die Frage

1
chaos

Sie versuchen, eine ausführbare 32-Bit-Datei in einem 64-Bit-System auszuführen. Das ist kein Problem, aber dafür benötigen Sie einige Pakete auf Ihrem System.

Fügen Sie der Paketbibliothek die 32-Bit-Architektur hinzu:

sudo dpkg --add-architecture i386 

Aktualisieren Sie den Paketcache:

sudo apt-get update 

Und installiere die benötigten Pakete:

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

Danach sollten Sie die ausführbare 32-Bit-Datei ausführen können.

Ein bisschen Hintergrund:

lddGibt zurück, not a dynamic executableda es sich nicht um eine ausführbare 64-Bit-Datei handelt, daher nicht um eine dynamische 64-Bit-Programmdatei. Um ein 64-Bit-Shaed-Objekt wie Ihre ausführbare Datei auszuführen, muss ein dynamischer Linker vorhanden sein: der Linux-Loader . Normalerweise liegt es in /lib. In 64-Bit-Linux-Systemen mit einem 32-Bit-Linker gibt es zwei Linker / Loader: Den 32-Bit-Loader /lib32/ld-linux.sound den 64-Bit-Loader /lib64/ld-linux.so. Eine 32-Bit-ausführbare Datei benötigt 32-Bit-Bibliotheken, sodass Ihre ausführbare Datei möglicherweise weitere Bibliotheken benötigt. Installieren Sie sie in Debian-basierten Systemen mit apt-get install libxyz:i386.