Немає такого файлу або каталогу, коли файл існує


1

Я називаю файл bitcoind в / usr / bin / bitcoind:

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

Однак я не можу виконати його:

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

sudo не допомагає:

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

Знайдено пропозицію, що це через відсутність деяких необхідних бібліотек, тому спробувавши скористатися 'ldd', щоб знайти їх:

bitcoin@Titan:~$ ldd /usr/bin/bitcoin
ldd: /usr/bin/bitcoin: No such file or directory

Ви впевнені, що назва файлу не містить прихованих символів? Перевірте з ls /usr/bin | grep bitcoind | xxd.
choroba

0000000: 6269 7463 6f69 6e64 0a bitcoind.
Benedict Lewis

1
The ldd Виклик пропускає a d в кінці.
choroba

1
Чи можете ви дати вихід file /usr/bin/bitcoind і uname -a?
chaos

@choroba Виправлено ldd повертається виклик not a dynamic executable.
Benedict Lewis

Відповіді:


1

Ви намагаєтеся запустити 32-бітну виконавчу версію в 64-бітній системі. Це не проблема, але вам потрібні деякі пакети для вашої системи, щоб мати можливість це зробити.

Додайте 32-розрядну архітектуру до бібліотеки пакетів:

sudo dpkg --add-architecture i386

Оновити кеш пакета:

sudo apt-get update

І встановіть необхідні пакети:

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

Після цього ви зможете виконати 32-бітний виконуваний файл.

Трохи фону:

ldd повертається not a dynamic executable тому що це не 64-бітний виконуваний файл, отже, не 64-бітний динамічний виконуваний файл. Щоб виконати 64-бітний об'єкт типу shaed, такий як ваш виконуваний файл, має бути динамічний лінкер: завантажувач linux . Зазвичай він знаходиться в /lib. У 64-бітних системах Linux з 32-бітним лінкером є два лінкера / завантажувача: 32-розрядний завантажувач в /lib32/ld-linux.so і 64-розрядний завантажувач в /lib64/ld-linux.so. 32-бітний виконуваний файл потребує 32-розрядних бібліотек, тому виконуваному файлу може знадобитися ще декілька бібліотек. Встановіть їх у системи на основі debian з apt-get install libxyz:i386.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.