Jak spustit 32bitovou aplikaci v 64bitovém Ubuntu?

106

Nainstaloval jsem Ubuntu 14.04 a aktuální SDK pro vývoj Android, který obsahuje 32bitové spustitelné soubory. Zjistil jsem, že nemohu spustit ty 32bitové binární soubory. Snažím se je spustit z bash mi dává chybu:

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

Existuje však:

$ 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. 

V dávných dobách byste mohli instalovat 32bitové knihovny na 64bitové Ubuntu, abyste získali 32bitovou podporu, ale zdá se, že už nefungují.

Jak spustím 32bitové aplikace na 64bitovém Ubuntu 14.04?

    
dané Thomas Stuefe 24.04.2014 09:29

4 odpovědi

160

Chcete-li spustit 32bitový spustitelný soubor na 64bitovém multi-architektonickém systému Ubuntu, musíte přidat architekturui386 a nainstalovat tři balíčky knihovenlibc6:i386,libncurses5:i386 alibstdc++6:i386:

sudo dpkg --add-architecture i386

Nebo pokud používáte Ubuntu 12.04 LTS (Precise Pangolin) nebo níže, použijte toto:

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

Pak:

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

Pokud selže, proveďte také

sudo apt-get install multiarch-support

Po těchto krocích byste měli mít možnost spustit 32bitovou aplikaci:

./example32bitprogram
    
odpověděl Avinash Raj 24.04.2014 09:31
6

"Neexistuje žádný takový soubor nebo adresář", pokud máte binární, ale chybí některé knihovny. Pokud nainstalujete balíčekbuild-essential, bude k dispozici příkazldd. Tento příkazldd ./adb | grep not vám ukáže, jaké knihovny chybí. Stačí nainstalovat tyto knihovny do i386 archu s apt. Stejně jako:apt-get install libmissing:i386 Dejte si pozor, některé buggy balíčky se pokusí vymazat 64bitovou verzi.

    
odpověděl Barafu Albino 24.04.2014 10:44
4

A pokud chcete použít "adb", existuje balíček pro něj:

sudo apt-get install android-tools-adb

A pouze 32bitové knihovny:

sudo apt-add-architecture i386

bude stačit.

    
odpověděl aastefanov 24.04.2014 14:29
2

Navíc k vynikající odpovědi Zanna a Avinash Raj musím nainstalovat také gcc-multilib:

sudo apt-get install gcc-multilib

Možná je to proto, že jsem chtěl spustit starou verzi gcc na 64bit.

    
odpověděl user2144067 04.09.2017 15:52