Я установил Ubuntu 14.04 и текущий SDK для разработки Android, который содержит 32-разрядные исполняемые файлы. Я обнаружил, что не могу запустить эти 32-разрядные двоичные файлы. Попытка запустить их из bash выдает ошибку:
$ ./adbbash: ./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.
Тот же симптом для всех других 32-разрядных инструментов в Android SDK.
В былые времена можно было просто установить 32-разрядные библиотеки на 64-разрядную Ubuntu, чтобы получить 32-разрядную поддержку, но, похоже, это больше не работает.
Как мне запускать 32-разрядные приложения в 64-разрядном дистрибутиве Ubuntu?
Чтобы запустить 32-разрядный исполняемый файл в 64-разрядной многоархитектурной системе Ubuntu, необходимо добавить i386 архитектура и установка трех библиотечных пакетов libc6:i386, libncurses5:i386, и libstdc++6:i386:
sudo dpkg --add-architecture i386
Или, если вы используете Ubuntu 12.04 LTS (Precise Pangolin) или ниже, используйте это:
"Нет такого файла или каталога" может появиться, когда у вас есть двоичный файл, но в нем отсутствуют некоторые библиотеки. Если вы установите build-essential посылка, у вас будет ldd команда доступна. Эта команда ldd ./adb | grep not покажет вам, каких библиотек не хватает. Просто установите эти библиотеки в i386 arch с помощью apt. Подобный этому: apt-get install libmissing:i386Будьте осторожны, некоторые багги-пакеты будут пытаться удалить 64-битную версию firs.
Это заменяет отсутствующую библиотеку libstdc++6-i386, что, вероятно, связано с тем, что пакет устарел. Не уверен, почему эта конкретная библиотека была важна.