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

100

Я установил 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?

    
задан Thomas Stuefe 24.04.2014 в 09:29
источник

4 ответа

150

Чтобы запустить 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
    
ответ дан Avinash Raj 24.04.2014 в 09:31
источник
6

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

    
ответ дан Barafu Albino 24.04.2014 в 10:44
источник
4

И если вы хотите использовать «adb», для него есть пакет:

sudo apt-get install android-tools-adb

И около 32-битных библиотек - только:

sudo apt-add-architecture i386

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

    
ответ дан aastefanov 24.04.2014 в 14:29
источник
1

В дополнение к превосходному ответу Zanna и Avinash Raj мне также пришлось установить gcc-multilib:

sudo apt-get install gcc-multilib

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

    
ответ дан user2144067 04.09.2017 в 15:52
источник

Ознакомьтесь с другими вопросами по меткам