Meskipun bundel Alat Pengembangan Android (ADT) tersedia sebagai paket zip untuk 'Linux 64 Bit', ia menyatakan persyaratan berikut :
Distribusi 64-bit harus mampu menjalankan aplikasi 32-bit.
Dan memang, hanya menjalankan paket gerhana pada sistem Fedora 17 64 bit menghasilkan kesalahan, karena tidak dapat 'menemukan' beberapa alat pengembangan, misalnya adb
atau aapt
:
Kesalahan menjalankan aapt: Tidak dapat menjalankan program "/ home / juser / local / adt-bundle-linux / sdk / platform-tools / aapt": error = 2, Tidak ada file atau direktori: error = 2, Tidak ada file atau direktori
'Tidak ada file seperti itu' menyesatkan karena ada di sana (di bawah $ HOME / lokal):
adt-bundle-linux/sdk/platform-tools/aapt
Tapi saya tidak bisa menjalankannya di shell:
~/local $ ./adt-bundle-linux/sdk/platform-tools/aapt
zsh: no such file or directory: ./adt-bundle-linux/sdk/platform-tools/aapt
Melihat file tersebut
$ file adt-bundle-linux/sdk/platform-tools/aapt
adt-bundle-linux/sdk/platform-tools/aapt: ELF 32-bit LSB executable, Intel 80386,
version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8,
not stripped
kita melihat bahwa itu adalah biner 32. Dan sepertinya sistem saya (saat ini) tidak mampu menjalankan aplikasi 32-bit.
Bagaimana saya mengubahnya? Bagaimana cara membuat sistem Fedora 64 bit saat ini yang mampu menjalankan aplikasi 32 bit?
(Tentu saja orang juga bisa bertanya mengapa seseorang akhirnya memasukkan binari 32 bit ke dalam paket biner yang disebut 'Linux 64 bit' ...)
Jawaban:
Berkenaan dengan gerhana tidak dapat menemukan
adb
, dll, ini karena tanpa perpustakaan bersama 32-bit yang diperlukan untuk menjalankannya pada sistem, mereka tidak dapat dieksekusi.Sehubungan dengan perpustakaan 32-bit, situasinya cukup sederhana: Anda hanya perlu menginstal lib 32-bit yang sesuai. Pada instalasi fedora 64-bit 17 yang saya miliki di sini, pustaka 64-bit utama ada di / usr / lib64 dan lib 32-bit opsional ada di / usr / lib. Jadi, jika saya memanggil
ldd
sdk / platform-tools / adb:Perhatikan ini semua di / lib, yang merupakan symlink ke / usr / lib (bukan / usr / lib64). Lihat:
Pustaka C 32-bit standar. Apa yang dapat Anda lakukan adalah pergi melalui alat SDK 32-bit dan periksa untuk melihat apa yang terkait dengan mereka
ldd
. Saya tidak punya contoh, tetapi jika ada yang hilangldd
laporkan sesuatu seperti:Pertama , thd, agar ldd berfungsi, Anda akan memerlukan loader 32-bit yang datang dengan glibc 32-bit (tanpa ini, ldd akan menyebutnya file yang tidak dapat dieksekusi dan tidak memberi tahu Anda apa pun):
Itu terpotong, tetapi paket x86_64 sudah Anda miliki; i686 adalah versi 32-bit. Jadi instal saja.
Anda tidak memerlukan paket 'devel', karena tidak ada yang dikompilasi. Di luar itu, tebakan dan
yum whatprovides
/ yangyum search
seharusnya membantu (melihat daftar adb, ada juga versi 32-lib dari C ++ lib, ncurses, pthreads, dan beberapa hal yang saya tidak tahu).Kiat cepat tentang penggunaan
whatprovides
:;)
sumber
ldd
. Karena itu: Saya tidak yakin, memintafile
versi bundeladb
tampilan: ELF 32-bit LSB dapat dieksekusi, Intel 80386 - tidak ada hubungannya dengan emulasi ARM - dan / usr / bin / adb (dari paket fedora android-tools) sebenarnya tersedia sebagai ELF 64-bit LSB yang dapat dieksekusi, x86-64 .adt-bundle-linux/sdk/platform-tools/adb
atasnya menampilkan 'not a dynamic executable'. Mengenai PATH - ini bukan masalah - sepenuhnya menentukan jalur misalnya./adt-bundle-linux/sdk/platform-tools/adb
di terminal tidak berfungsi (menghasilkan 'zsh: tidak ada file atau direktori [..]').Anda harus menginstal 32 bit glibc:
Ini menghapus pesan 'no file or directory' yang menyesatkan ketika mencoba menjalankan biner 32 bit. Dengan itu sistem Fedora 64 bit mampu mengeksekusi binari 32 bit.
Ini juga menghilangkan pesan 'bukan eksekusi dinamis' yang menyesatkan
ldd
ketika memanggilldd
eksekusi dinamis 32 bit.Sekarang Anda harus menginstal pustaka 32 bit yang hilang yang biner-binari
adt-bundle-linux/sdk/platform-tools
ditautkan:Itu dia.
Latar Belakang
Beberapa latar belakang cara menurunkan nama paket di atas. Misalnya melihat output dari
berarti, bahwa 2 perpustakaan masih hilang untuk adb.
Untuk setiap 'tidak ditemukan' kita harus mencari nama paket, misalnya:
Sekarang kita ambil nama dasar paket dan tambahkan '.i686' untuk mendapatkan versi 32 bit.
sumber
glibc.i686
memungkinkanldd
untuk bekerja dengan baik dengan i386 binari.Anda dapat menginstal paket yang diperlukan dengan:
sumber