"No such file or directory"尝试在安卓设备上执行 Linux 二进制文件



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

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

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

更多信息:这个小程序使用 fc 和 fm 库。由于 ARM 工具链似乎没有 crt1,从我发现的示例中,它通常包含启动代码,我们在 android 版本中搜索了包含它的文件,找到了 crtbegin_dynamic 并crtend_dynamic,但对于_static等效项,缺少其中一对,所以我没有将 -static 传递给 GCC。它是用"-nostdlib"构建的。

可能有什么问题?

如果您使用的是像 Ubuntu 64 这样的 64 位平台,那么此提示可以帮助您解决问题。只需尝试简单地安装 i386 32 位兼容性库apt-get:

sudo apt-get install ia32-libs

它对我来说效果很好。如果您遇到同样的麻烦,请告诉我。

对于 Ubuntu 13.10 或更高版本

正如阿迪亚在这个答案的评论中所说:

从 Ubuntu 13.10 开始,现在必须运行它: sudo apt-get install lib32z1 ,您可能还需要获取C++ stdlibs,如下所示: sudo apt-get install lib32ncurses5 lib32stdc++6 <</p>

div class="one_answers">

要修改 aditya 上面的评论,您还可以在 Ubuntu 13.10 中对 C++ stdlibs 执行以下操作:

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

最新更新