我使用Android GCC工具链(普通linux,没有android或NDK)构建了原生linux ARM二进制文件。
我从我的电脑通过adb shell连接到运行Android 4的平板电脑。 我在该设备上“adb push”将二进制文件写入/ system / bin,希望我能在那里执行它。我用chmod 777标记它是可执行文件。
如果我尝试执行它,我会得到“没有这样的文件或目录”。
更多信息: 小程序使用fc和fm libs。由于ARM工具链似乎没有crt1,从我发现的一个例子中,通常包含启动代码,我们在android构建中搜索包含它的文件,找到crtbegin_dynamic和crtend_dynamic,但对于_static等效,其中一个失踪,所以我没有通过GCC的静止。它是用“-nostdlib”构建的。
可能是什么问题?
答案 0 :(得分:48)
如果您正在使用像Ubuntu 64这样的64位平台,那么本技巧可以帮助您解决问题。试着简单地安装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
答案 1 :(得分:2)
要修改上面的aditya评论,您还可以在Ubuntu 13.10中使用以下内容来表示C ++ stdlib:
sudo apt-get install lib32ncurses5 libstdc++6:i386