Pertanyaan Bagaimana menjalankan aplikasi 32-bit di Ubuntu 64-bit?


Saya menginstal Ubuntu 14.04 dan SDK pengembangan Android saat ini, yang berisi executable 32-bit. Saya menemukan bahwa saya tidak dapat menjalankan binari 32-bit tersebut. Mencoba memulainya dari bash memberi saya kesalahan:

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

Itu ada di sana meskipun:

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

Pada zaman dahulu seseorang hanya dapat menginstal pustaka 32-bit pada Ubuntu 64-bit untuk mendapatkan dukungan 32-bit, tetapi tampaknya itu tidak berfungsi lagi.

Bagaimana cara menjalankan aplikasi 32-bit pada Ubuntu 14.04 64-bit?


106
2018-04-24 07:29


asal


stackoverflow.com/a/19524010/1778421 - Alex P.


Jawaban:


Untuk menjalankan file executable 32-bit pada sistem multi-arsitektur 64-bit Ubuntu, Anda harus menambahkan i386 arsitektur dan menginstal tiga paket pustaka libc6:i386, libncurses5:i386, dan libstdc++6:i386:

sudo dpkg --add-architecture i386

Atau jika Anda menggunakan Ubuntu 12.04 LTS (Precise Pangolin) atau di bawah, gunakan ini:

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

Kemudian:

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

Jika gagal, lakukan juga

sudo apt-get install multiarch-support

Setelah langkah-langkah ini, Anda harus dapat menjalankan aplikasi 32-bit:

./example32bitprogram

160
2018-04-24 07:31



@AvinashRaj Ini membantu saya! Namun, apa perintah terakhir "sudo ./adb" yang seharusnya dilakukan sebenarnya? - Marcel
Ini mengeksekusi file biner 32bit adb yang hadir di direktori saat ini. - Avinash Raj
untuk bisa bekerja di Ubuntu 14.04, saya harus menginstal lib32z1 juga, tetapi melihat itu menarik libc6-i386 (perbedaan, perhatikan tanda hubung, bukan titik dua). - Chris Betti
Saya melakukan langkah Anda, libc6:i386, libncurses5:i386, libstdc++6:i386 adalah versi terbaru dan disetel untuk dipasang secara manual. Tapi setelah itu dikatakan: "Soma packages could not be installed.This may mean you have requested impossible situation or you are using unstable distribution ..."dan dependensi yang tidak terpenuhi: libstdc++6-4.4-dev:i386 tergantung g++-4.4:i386(tidak akan diinstal). konflik: libstdc++6-4.4-dbg:i386 ... dan konflik lain tentang libstdc++6-4.4/6/7 dll. Apa yang salah atau haruskah saya membiarkannya seperti sekarang? - Fredrick Gauss
@FredrickGauss masuk sini. - Avinash Raj


"Tidak ada file atau direktori semacam itu" yang mungkin akan muncul ketika Anda memiliki biner Anda, tetapi tidak memiliki beberapa pustaka. Jika Anda menginstal build-essential paket, Anda akan memiliki ldd perintah tersedia. Perintah ini ldd ./adb | grep not akan menunjukkan kepada Anda perpustakaan apa yang hilang. Cukup instal pustaka ini di i386 arch dengan apt. Seperti ini: apt-get install libmissing:i386 Hati-hati, beberapa paket buggy akan mencoba menghapus versi 64 bit.


6
2018-04-24 08:44



Terima kasih, itu akan menjelaskan pesan kesalahan aneh. Saya pertama kali bingung mengapa bash akan memberi saya kesalahan ini (bukan kesalahan datang lebih jelas dari proses anak yang merindukan perpustakaan), tapi sekarang saya kira bash hanya melihat exec (3) mengembalikan ENOENT dan mencetak ini. - Thomas Stuefe


Dan jika Anda ingin menggunakan "adb" ada paket untuk itu:

sudo apt-get install android-tools-adb

Dan sekitar 32-bit libraries - hanya:

sudo apt-add-architecture i386

akan cukup.


4
2018-04-24 12:29



Terima kasih atas tipnya, tetapi saya ingin menggunakan alat-alat android yang diunduh dari google, bukan yang ada di repositori Ubuntu. Saya juga tidak yakin tentang kelengkapan paket itu. - Thomas Stuefe
Repositori Ubuntu harus memiliki versi baru. Paket hanya berisi adb. Jika Anda ingin fastboot - ada paket untuk itu juga :) - aastefanov


Selain itu untuk jawaban yang sangat baik dari Zanna dan Avinash Raj saya harus menginstal gcc-multilib juga:

sudo apt-get install gcc-multilib

Mungkin ini karena saya ingin menjalankan versi gcc lama di 64bit.


2
2017-09-04 13:52