'Böyle bir dosya veya dizin yok' bash'ta hata var, ancak dosya var mı?


29

Ubuntu'da bir komutu çalıştırmaya çalıştığımda 'Böyle bir dosya veya dizin yok' hatası alıyorum.

Kontrol ettim ls -la, dosya adborada ve 'x' bayrağı var O zaman neden 'Böyle bir dosya veya dizin yok' alıyorum?

~/Programs/android-sdk-linux_x86/platform-tools$ ./adb
 bash: ./adb: No such file or directory
~/Programs/android-sdk-linux_x86/platform-tools$ ls -la
 total 34120
 drwxrwxr-x 3 silverstri silverstri     4096 2011-10-08 18:50 .
 drwxrwxr-x 8 silverstri silverstri     4096 2011-10-08 18:51 ..
 -rwxrwxr-x 1 silverstri silverstri  3764858 2011-10-08 18:50 aapt
 -rwxrwxr-x 1 silverstri silverstri   366661 2011-10-08 18:50 adb
 -rwxrwxr-x 1 silverstri silverstri   906346 2011-10-08 18:50 aidl
 -rwxrwxr-x 1 silverstri silverstri   328445 2011-10-08 18:50 dexdump
 -rwxrwxr-x 1 silverstri silverstri     2603 2011-10-08 18:50 dx
 drwxrwxr-x 2 silverstri silverstri     4096 2011-10-08 18:50 lib
 -rwxrwxr-x 1 silverstri silverstri 14269620 2011-10-08 18:50 llvm-rs-cc
 -rwxrwxr-x 1 silverstri silverstri 14929076 2011-10-08 18:50 llvm-rs-cc-2
 -rw-rw-r-- 1 silverstri silverstri      241 2011-10-08 18:50 llvm-rs-cc.txt
 -rw-rw-r-- 1 silverstri silverstri   332494 2011-10-08 18:50 NOTICE.txt
 -rw-rw-r-- 1 silverstri silverstri      291 2011-10-08 18:50 source.properties

eğer file adb
kaçarsan

Bu '$ dosya adb adb: ELF 32-bit LSB çalıştırılabilir, Intel 80386, sürüm 1 (SYSV), dinamik olarak bağlı (paylaşılan libs kullanır), GNU / Linux 2.6.8 için, soyulmamış'
michael

Yanıtlar:


16

Gerekli kütüphaneleri özleyen yürütülebilir bir dosyadır. lddNeye ihtiyacı olduğunu görmek için kullanın , ardından bu dosyaları sağlayın.


10
Bu '$ ldd ./adb dinamik bir çalıştırılabilir değil'
michael

54

Android SDK, 32 bit kitaplıklar gerektirir. Muhtemelen 64-bit üzerinde ve 32-bit libs gerekir. Developer.android.com sitesinden sorun giderme talimatları aşağıda verilmiştir

Yukarıdaki Ubuntu 13.10 (Şımarık Salamander) ve için, yüklemek libncurses5:i386, libstdc++6:i386ve zlib1g:i386kullanan paketler apt-get:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386

Ubuntu'nun önceki sürümlerinde, ia32-libsapt-get kullanarak paketi kurun :

apt-get install ia32-libs

2
Kahretsin, çok şey yükler. Ama işe yarıyor.
Travis Reeder

1
Michael gibi, "dosya", 32 bitlik bir ELF ikili olduğunu söyledi ve ldd bana bunun dinamik bir çalıştırılabilir olmadığını söyledi. Bu 32 bit kütüphaneyi kurmak sorunu çözdü.
Eponymous

2
En yanıltıcı hata mesajı! o_O
MathematicalOrchid

re: {İşte sorun giderme talimatları burada. developer.android.com} Orada sorun giderme talimatları göremiyorum ...
ruslo

4
sudo apt-get install --reinstall libc6-i386

Ayrıca benim için de ihtiyaç var.


3
Bunun yardım ettiğini mi demek istedin? Neden bir fikrin var mı? Bunu nereden aldın?
Tamara Wijsman

3

Makinemi 32 bit ubuntu'dan 64 bit'e geçirdikten sonra da aynı şeyi görüyordum. Bash, execute niteliği ile açıkça var olan dosyaların 'böyle bir dosya veya dizini' rapor eder.

sudo apt-get install - yeniden yükleme libc6-i386

Sorun düzeltildi. Bunlar "GNU C Kütüphanesi: AMD64 için 32-bit paylaşılan kütüphaneler"

Görünüşe göre bu bash bir hata. Ayrıca varsayılan kabuğunu kullanarak dash'den bash'ye değiştirdiğimi de unutmayın.

sudo dpkg-yeniden yapılandırma çizgi

çalıştırılabilir 32 bit çalıştırmayı denemeden önce. Bu nedenle, sorunun varsayılan çizgi kabuğu ile gerçekleşip gerçekleşmeyeceğinden emin değilim.


2

Yeni bir Xubuntu 13.10 x64 kurulumunda adbçalıştırmam gerekenler :

sudo apt-get install --reinstall libc6-i386
sudo apt-get install libstdc++6:i386

Ve ayrıca iş zlib1g:i386yapmak için aapt.

ve hala bir şeyi kullanmak özlüyorsanız:

lld adb

Bu benim için harika oldu, ama sudo dpkg --add-architecture i386; sudo apt-get updatelibstdc ++ 6:
i386'yı

Sanırım demek ldd adb
istedin

1

Adb için, SDK'yı paketten çıkardığınızdan ve SDK'yı tamamen doldurmak için SDK Yöneticisini çalıştırdığınızdan emin olun. Ayrıca, aşağıdakilerin kurulu olduğundan emin olun: A.) JDK 6 veya daha iyisi B.) lib32stdc ++ 6 C.) lib32ncurses5

hoffmanc, doğru olana en yakın olanıydı, Daniel Beck'in cevabının neden çok yakın olmadığı ve sorunla ilgisi olmadığı zaman neden doğru olarak işaretlendiğini anlamıyorum.

Bu arada, gerçekten gerçek olmayan bir komut çalıştırmayı denerseniz (örneğin:

# fakecommand

alırsınız: fakecommand: komut bulunamadı, oysa durumunuzda gördüğünüz çıktı aslında adb'den geliyor, ancak durum çok açık olmasa da.


1

Ubunto'nun LSB uyumluluğu ile ilgili bazı sorunları var gibi görünüyor, bu yüzden Ubunto'daysanız bunu deneyin

apt-get install lsb

Ldd'nin tüm kütüphanelerin orada olduğunu göstereceğini, ancak olmadığını gösterir.

usmp-vm-lamp01$ ldd lmgrd
 linux-vdso.so.1 =>  (0x00007fffb33fe000)
 libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f10b0a48000)
 libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f10b074c000)
 libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f10b0535000)
 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f10b0175000)
 libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f10aff71000)
 /lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2 (0x00007f10b0c67000)
usmp-vm-lamp01$ locate libpthread.so.0
/lib/x86_64-linux-gnu/libpthread.so.0
usmp-vm-lamp01$ locate libm.so.6
/lib/x86_64-linux-gnu/libm.so.6
usmp-vm-lamp01$ locate /lib64/ld-lsb-x86-64.so.3
usmp-vm-lamp01$

Julius adlı bir konuşma tanıma paketiyle bu sorunu yaşıyordum. Bu benim için düzeltti.
Fireandlight27
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.