2012-06-28 24 views
9

Tôi đang chạy ArchLinux, kernel 3.4.4, bash phiên bản 4.2.29. Tôi đã tải xuống sdk android từ đây: http://developer.android.com/sdk/index.htmlBash không thể tìm thấy quảng cáo mặc dù chắc chắn có

Khi trích xuất tôi đã làm, đã làm ~/android-sdk-linux/tools/android và cài đặt gói công cụ nền tảng SDK.

Từ đó tôi thử như sau:

> ls -l ~/android-sdk-linux/platform-tools/adb 
-rwxr-xr-x 1 mediocregopher mediocregopher 204436 Jun 28 13:20 /home/mediocregopher/android-sdk-linux/platform-tools/adb 

> file ~/android-sdk-linux/platform-tools/adb 
/home/mediocregopher/android-sdk-linux/platform-tools/adb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped 

> ~/android-sdk-linux/platform-tools/adb 
bash: /home/mediocregopher/android-sdk-linux/platform-tools/adb: No such file or directory 

Rõ ràng các tập tin là có và tại ít nhất là rất thực thi, tại sao có thể không bash dường như tìm thấy nó? Tôi đã thử thêm thư mục nền tảng công cụ vào đường dẫn của tôi cũng như sudo và su-ing, nhưng không có vấn đề gì có vẻ như tập tin không được tìm thấy. Có ai biết điều gì có thể xảy ra không?

Trả lời

17

Bạn đang chạy trên hệ thống 64 bit và bạn chưa cài đặt thư viện tương thích 32 bit.

Lỗi thực sự đến từ thực tế là không thể tìm thấy 32bit ld.so.

Nếu bạn đang sử dụng ubuntu/debian, tôi nghĩ bạn chỉ cần sudo apt-get install ia32-libs và nó sẽ hoạt động.

+0

+1 Đây là lý do ít phổ biến hơn đối với ENOENT từ [execve (2)] (http://www.kernel.org/doc/man-pages/online/pages/man2/execve.2.html) – pilcrow

+1

Điều này đã trở thành vấn đề. Tôi đã tìm thấy android-sdk trong AUR của vòm nhưng không thể cài đặt nó vì nó cần một gói lib32- *. Hóa ra tôi chỉ cần kích hoạt repo multilib. Cảm ơn bạn đã chỉ cho tôi đúng hướng :) –

+1

[Cài đặt SDK Android] (http://developer.android.com/sdk/installing/index.html?pkg=tools) giải thích điều này trong "Gỡ rối Ubuntu". – reergymerej

9

Đối với phiên bản 'hiện đại' của Ubuntu (13.10 trở lên), câu trả lời được chấp nhận không hoạt động nữa: Chúng đã loại bỏ '32 bit compability libraries 'và thay vào đó bạn cần sử dụng các gói multiarch vui vẻ cùng tồn tại bên cạnh nhau. Xem What happened to the ia32-libs package? trên AskUbuntu.

Thay vào đó bạn cần phải cài đặt phiên bản 32 bit của libc:

sudo apt-get install libc6:i386 

Tiếp theo, tôi encounterd rằng một phiên bản 32 bit của libstdc++ cũng là yêu cầu của adb:

sudo apt-get install libstdc++6:i386 

Bây giờ adb nên được làm việc (một lần nữa).

Android SDK on a 64-bit linux machine cũng cho thấy rằng một số thư viện khác cũng được yêu cầu. Tôi dường như không yêu cầu họ, nhưng có thể họ đã cài đặt chúng rồi.

+0

+1, giải pháp này cũng giúp tôi cài đặt Anaconda 32bit trên hệ thống 64 bit –

Các vấn đề liên quan