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

我使用Android GCC工具链(纯linux,没有android或NDK)构build了一个本机linux ARM二进制文件。

我通过adb shell连接到运行Android 4的平板电脑。我“adb push”把那个二进制文件编辑到该设备的/ system / bin目录下,希望能够在那里执行。 我用chmod 777标记了可执行文件。

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

更多信息:小程序使用fc和fm库。 由于ARM工具链似乎没有crt1,从我发现的例子来看,它通常包含启动代码,我们通过包含它的文件在android版本中search,findcrtbegin_dynamic和crtend_dynamic,但是对于_static等价的,其中一个失踪了,所以我没有通过GCC的静态。 它是用“-nostdlib”构build的。

可能是什么问题?

如果你正在使用像Ubuntu 64这样的64位平台,那么这个技巧可能会帮助你解决这个问题。 试试简单地用apt-get来安装i386 32位兼容性库:

sudo apt-get install ia32-libs 

它对我很好。 让我知道,如果你陷入同样的​​麻烦。

对于Ubuntu 13.10或更高版本

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

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

要修改上面的aditya的注释,你也可以在Ubuntu 13.10中使用下面的C ++ stdlib:

 sudo apt-get install lib32ncurses5 libstdc++6:i386