Я установил 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?
Ответы:
Для того, чтобы запустить 32-битный исполняемый файл на 64-битную мультиархитектурной системе Ubuntu, вы должны добавить
i386
архитектуру и установить три библиотеку пакетовlibc6:i386
,libncurses5:i386
иlibstdc++6:i386
:Или, если вы используете Ubuntu 12.04 LTS (Precise Pangolin) или ниже, используйте это:
Затем:
Если не получается, сделайте также
После этих шагов вы сможете запустить 32-битное приложение:
источник
lib32z1
, но он заметил, что он загружен в libc6-i386 (различие, обратите внимание на дефис, а не на двоеточие).libc6:i386
,libncurses5:i386
,libstdc++6:i386
самая новая версия и установить вручную установить. Но после этого он говорит: «Soma packages could not be installed.This may mean you have requested impossible situation or you are using unstable distribution ...
» и неудовлетворенные зависимости:libstdc++6-4.4-dev:i386
зависитg++-4.4:i386
(не будет установлен). конфликты:libstdc++6-4.4-dbg:i386
... и другие конфликтыlibstdc++6-4.4/6/7
и т. д. Что не так или я должен оставить все как есть?«Нет такого файла или каталога» может появиться, когда у вас есть бинарный файл, но в нем отсутствуют некоторые библиотеки. Если вы установите
build-essential
пакет, у вас будетldd
команда доступна. Эта командаldd ./adb | grep not
покажет вам, какие библиотеки отсутствуют. Просто установите эти библиотеки в i386 arch с apt. Вот так:apt-get install libmissing:i386
Осторожно, некоторые ошибочные пакеты будут пытаться удалить первые 64-битные версии.источник
И если вы хотите использовать «adb», для этого есть пакет:
И про 32-битные библиотеки - только:
будет достаточно.
источник
В дополнение к превосходному ответу Занны и Авинаша Раджя, мне также пришлось установить gcc-multilib:
Возможно, это потому, что я хотел запустить старую версию gcc на 64-битной версии.
источник
Просто дополнение к Zanna: Следующее решило проблему андроид-студии «невозможно установить библиотеки»:
$ sudo apt-get install libdb1-compact tzdata initscripts
Это заменяет отсутствующую библиотеку libstdc ++ 6-i386, что, вероятно, связано с устареванием пакета. Не уверен, почему эта конкретная библиотека была важна.
источник