"没有这样的文件或目录"试图在Android设备上执行linux二进制文件

use*_*129 27 linux android native

我使用Android GCC工具链(普通的linux,没有android或NDK)构建了一个原生的Linux ARM二进制文件.

我从我的电脑上通过adb shell连接到运行Android 4的平板电脑.我"adb push"将该二进制文件连接到该设备上的/ system/bin,希望我能让它在那里执行.我用chmod 777标记它是可执行文件.

如果我尝试执行它,我会得到"没有这样的文件或目录".

更多信息:小程序使用fc和fm库.由于ARM工具链似乎没有crt1,从我发现的一个例子中,通常包含启动代码,我们在android构建中搜索包含它的文件,找到了crtbegin_dynamic和crtend_dynamic,但是对于_static等价,其中一个失踪,所以我没有通过GCC的静止.它是用"-nostdlib"构建的.

可能是什么问题?

小智 48

如果您正在使用像Ubuntu 64这样的64位平台,那么本技巧可能会帮助您解决问题.只是尝试使用apt-get安装i386 32位兼容库:

sudo apt-get install ia32-libs
Run Code Online (Sandbox Code Playgroud)

它对我很有用.如果你遇到同样的麻烦,请告诉我.

对于Ubuntu 13.10或更高版本

正如aditya在对这个答案的评论中所说:

从Ubuntu 13.10开始,现在必须运行它: sudo apt-get install lib32z1你可能需要得到C++ stdlibs,用这个:sudo apt-get install lib32ncurses5 lib32stdc++6

  • 从Ubuntu 13.10开始,看起来ia32-libs已被以下软件包取代.现在必须运行它:`sudo apt-get install lib32z1`我必须得到C++ stdlibs,这个:`sudo apt-get install lib32ncurses5 lib32stdc ++ 6` (11认同)
  • 我可以说这个. (3认同)
  • 虽然这可能有助于其他人在他们的ubuntu linux系统上运行adb可执行文件,但它似乎没有任何与问题有关的问题,这涉及**在android本身下运行二进制**.毋庸置疑,Android不使用debian风格的包装系统. (3认同)