我使用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 lib32z1
: sudo apt-get install lib32z1
,你可能也需要得到C ++ stdlibs,用下面的sudo apt-get install lib32ncurses5 lib32stdc++6
: sudo apt-get install lib32ncurses5 lib32stdc++6
要修改上面的aditya的注释,你也可以在Ubuntu 13.10中使用下面的C ++ stdlib:
sudo apt-get install lib32ncurses5 libstdc++6:i386