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

1 ответ1

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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .