bash中“没有这样的文件或目录”错误,但是文件存在吗?


29

在Ubuntu上,当我尝试执行命令时收到“没有这样的文件或目录”错误。

我已经检查了ls -la,文件 adb在那里并且带有'x'标志。为什么为什么我得到'没有这样的文件或目录'?

~/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

如果运行,您会得到什么file adb
jdigital 2011年

我得到这个“ $文件adb adb:ELF 32位LSB可执行文件,Intel 80386,版本1(SYSV),动态链接(使用共享库),用于GNU / Linux 2.6.8,未剥离”
michael

Answers:


16

这是一个可执行文件,缺少必需的库。使用ldd来了解它需要什么,然后提供这些文件。


11
我得到这个'$ ldd ./adb不是动态可执行文件'
michael

55

Android SDK需要32位库。您可能使用的是64位,并且需要32位的库。这是来自developer.android.com的故障排除指南

为Ubuntu 13.10(莽撞的火蜥蜴)及以上,安装libncurses5:i386libstdc++6:i386zlib1g:i386使用apt-get的包:

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

对于早期版本的Ubuntu,请ia32-libs使用apt-get 安装软件包:

apt-get install ia32-libs

2
该死的,安装了很多东西。但这有效。
特拉维斯·里德

1
像michael一样,“文件”告诉我这是32位ELF二进制文件,而ldd告诉我这不是动态可执行文件。安装这些32位库可以解决此问题。
同义的2012年

2
有史以来最具误导性的错误消息!o_O
数学

回复:{这是来自developer.android.com的疑难解答说明}我在那里看不到任何疑难解答说明...
回复

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

我也需要


3
您是说对您有所帮助吗?知道为什么吗?你从哪里得到的?
Tamara Wijsman

3

将机器从32位ubuntu切换到64位后,我也看到了相同的内容。Bash会报告execute属性明确存在的文件“没有此类文件或目录”。

sudo apt-get install-重新安装libc6-i386

解决了问题。这些是“ GNU C库:用于AMD64的32位共享库”

似乎这是bash中的错误。请注意,我还使用以下命令将默认shell从破折号更改为bash

sudo dpkg重新配置破折号

在尝试运行32位可执行文件之前。所以我不确定默认的破折号外壳是否会发生问题


2

在全新的Xubuntu 13.10 x64安装上,我必须adb运行:

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

并且 zlib1g:i386做好aapt工作。

如果您仍然想念某些东西,请使用:

lld adb

这对我来说很棒,但是我不得不打电话sudo dpkg --add-architecture i386; sudo apt-get update给libstdc ++ 6:i386可用
nicopico 2014年

我想你的意思是ldd adb
Prashanth Chandra

1

对于adb,请确保已解压缩SDK,并已运行SDK Manager,以完全填充SDK。此外,请确保已安装以下组件:A.)JDK 6或更高版本B.)lib32stdc ++ 6 C.)lib32ncurses5

霍夫曼克(Hoffmanc)是最接近解决问题的方法,我真的不明白为什么当丹尼尔·贝克(Daniel Beck)的答案甚至还很接近并且与问题无关时,都被标记为正确答案。

顺便说一句,如果您尝试运行真正不存在的命令(即:

# fakecommand

您将得到:fakecommand:未找到命令,但是在您所处的情况下,您看到的输出实际上是来自adb的,即使情况不是很清楚。


1

Ubunto似乎与LSB兼容性存在一些问题,因此如果您使用的是Ubunto,请尝试此操作

apt-get install lsb

请注意,ldd会显示所有库均存在,但不是。

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的语音识别程序包时遇到了这个问题。这就是为我解决的问题。
Fireandlight14年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.