Как запустить 32-битное приложение в Ubuntu 64-бит?

Я установил Ubuntu 14.04 и текущий SDK для Android, который содержит 32-битные исполняемые файлы. Я обнаружил, что не могу запустить эти 32-разрядные двоичные файлы. Попытка запустить их из bash дает мне ошибку:

$ ./adb
bash: ./adb: No such file or directory

Это там, хотя:

$ ls -al ./adb
-rwxrwxrwx 1 thomas thomas 1231255 Jan 17 13:31 ./adb
$ file ./adb
./adb: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped. Same symptom for all the other 32-bit tools in the Android SDK. 

В старые времена можно было просто установить 32-битные библиотеки на 64-битную Ubuntu получить 32-битную поддержку, но это больше не работает.

Как мне запустить 32-битные приложения на 64-битной Ubuntu 14.04?

157
задан 28 April 2017 в 09:03

5 ответов

Чтобы запустить 32-битный исполняемый файл в 64-битной многоархитектурной системе Ubuntu, вы должны добавить i386 и установите три пакета библиотек libc6: i386 , libncurses5: i386 и libstdc ++ 6: i386 :

sudo dpkg --add-architecture i386

Или если вы используете Ubuntu 12.04 LTS (Precise Pangolin) или ниже, используйте это:

echo "foreign-architecture i386" > /etc/dpkg/dpkg.cfg.d/multiarch

Затем:

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

В случае неудачи сделайте также

sudo apt-get install multiarch-support

После этих шагов вы сможете запустить 32-битное приложение:

./example32bitprogram
218
ответ дан 28 April 2017 в 09:03

«Нет такого файла или каталога» может появиться, когда у вас есть двоичный файл, но в нем отсутствуют некоторые библиотеки. Если вы установите пакет build-essential , вам будет доступна команда ldd . Эта команда ldd ./adb | grep not покажет вам, какие библиотеки отсутствуют. Просто установите эти библиотеки в арку i386 с помощью apt. Как это: apt-get install libmissing:i386 Остерегайтесь, некоторые пакеты с ошибками сначала попытаются удалить 64-битную версию.

10
ответ дан 28 April 2017 в 09:03

А если вы хотите использовать adb, для этого есть пакет:

sudo apt-get install android-tools-adb

А насчет 32-битных библиотек - только:

sudo apt-add-architecture i386

будет достаточно.

5
ответ дан 28 April 2017 в 09:03

В дополнение к отличному ответу Занны и Авинаша Раджа мне пришлось также установите gcc-Multilib:

sudo apt-get install gcc-multilib

Возможно, это потому, что я хотел запустить старую версию gcc на 64-битной версии.

4
ответ дан 28 April 2017 в 09:03

Просто дополнение к Zanna:
Следующее решило проблему студии Android "невозможно установить библиотеки":

sudo apt-get install libdb1-compact tzdata initscripts

Это заменяет отсутствующую библиотеку libstdc ++ 6-i386, что, вероятно, связано с тем, что пакет устарел. Не уверен, почему эта конкретная библиотека была важна.

0
ответ дан 22 November 2019 в 22:54

Другие вопросы по тегам:

Похожие вопросы: