基于NDK独立工具链和仿生工具链的一些限制,我使用了以下一般设置使用了自己的工具链:
使用它,我构建了一个可执行文件,并将所有依赖项(包括libc、device等)上传到我的Android设备上。我用ld-linux.so.3手动运行可执行文件--库路径.
它是一个非常复杂的可执行文件,除了执行任何system()调用,甚至是一些基本的调用(如system("pwd")或system(NULL) )之外,它们似乎都能工作,我得到127作为状态(未找到)。如果我更进一步使用popen来收集回复,我会得到:
*检测到glibc *双自由或损坏
怎么一回事?有人成功地做了类似的事情吗?有权限问题吗?Android是否有本质上的不同,使得system()调用不可能?在哪里可以找到仿生处理系统和popen (源代码)的方式,因为我认为如果您使用NDK,您可以执行system()调用。
发布于 2012-09-09 06:21:42
发布于 2012-09-09 06:18:01
我建议您只使用您自己版本的system。它一点也不复杂,这将使您能够确定失败的确切系统调用以及它失败的错误。很可能,shell是不正确的,这就是产生错误的原因--您的库正在指定一个不存在的shell程序。
https://stackoverflow.com/questions/12336954
复制相似问题