Я установил 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:
sudo dpkg --add-architecture i386
Или, если вы используете Ubuntu & nbsp; 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
Чтобы запустить 32-разрядный исполняемый файл в 64-битной многоадресной системе Ubuntu, вам нужно добавить архитектуру i386 и установить три библиотечных пакета libc6:i386, libncurses5:i386 и libstdc++6:i386:
sudo dpkg --add-architecture i386
Или, если вы используете Ubuntu & nbsp; 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
И если вы хотите использовать «adb», для него есть пакет:
sudo apt-get install android-tools-adb
И около 32-битных библиотек - только:
sudo apt-add-architecture i386
будет достаточно.
«Нет такого файла или каталога» может появиться, когда у вас есть свой двоичный файл, но ему не хватает некоторых библиотек. Если вы установите пакет build-essential, у вас будет доступная команда ldd. Эта команда ldd ./adb | grep not покажет вам, какие библиотеки отсутствуют. Просто установите эти библиотеки в i386 arch с помощью apt. Например: apt-get install libmissing:i386 Осторожно, некоторые багги-пакеты будут пытаться удалить 64-битную версию firs.
В дополнение к отличному ответу Zanna и Avinash Raj мне также пришлось установить gcc-multilib:
sudo apt-get install gcc-multilib
Возможно, это потому, что я хотел запустить старую версию gcc на 64-битной версии.
И если вы хотите использовать «adb», для него есть пакет:
sudo apt-get install android-tools-adb
И около 32-битных библиотек - только:
sudo apt-add-architecture i386
будет достаточно.
«Нет такого файла или каталога» может появиться, когда у вас есть свой двоичный файл, но ему не хватает некоторых библиотек. Если вы установите пакет build-essential, у вас будет доступная команда ldd. Эта команда ldd ./adb | grep not покажет вам, какие библиотеки отсутствуют. Просто установите эти библиотеки в i386 arch с помощью apt. Например: apt-get install libmissing:i386 Осторожно, некоторые багги-пакеты будут пытаться удалить 64-битную версию firs.
В дополнение к отличному ответу Zanna и Avinash Raj мне также пришлось установить gcc-multilib:
sudo apt-get install gcc-multilib
Возможно, это потому, что я хотел запустить старую версию gcc на 64-битной версии.