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

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

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

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

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

可能是什么问题?

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

sudo apt-get install ia32-libs 

它对我很有用。 如果你陷入同样的​​麻烦,请告诉我。

对于Ubuntu 13.10或更高版本

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

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

要修改上面的aditya注释,您还可以在Ubuntu 13.10中使用以下内容来表示C ++ stdlib:

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