使用Jelly Bean时问题包括Android应用程序的可执行文件

时间:2012-11-20 06:48:54

标签: android permissions cross-compiling android-4.2-jelly-bean

我已经向Android移植了一些有用的免费/开源工具。一个是Octave,另一个是gnuplot。他们齐心协力,为Matlab提供免费(如语音)和免费(如啤酒)的功能。我以有趣的方式将它们打包在应用程序中。具体地,

1)我在libs / armeabi目录中包含可执行文件和共享库。由于android命名约定,必须给他们有趣的名字。

2)我创建目录bin /和mylib/。我给他们完全的权限。

3)我创建了从bin/到解压缩的lib/目录中的可执行文件的链接。我给他们正确的名字和完整的权限。

4)我创建了从mylib/到解压缩的lib/目录中的共享库的链接。我给他们正确的名字和完整的权限。

5)然后我使用ld-linux.so.3,它是mylib/目录中的一个库,--library-path选项指向mylib/目录以启动可执行文件来自Android终端模拟器。

Octave在所有版本的Android中完美地运行,但是当我在仅运行Jelly Bean时尝试启动时,gnuplot会出现此错误:

error while loading shared libraries: gnuplot: failed to map segment 
from shared object: Operation not permitted.

那么,为什么我会以同样的方式为这两个可执行文件之一出现此错误?为什么只在果冻豆?另外,在JB上,如果我让自己成为超级用户,那么一切都会再次运作。

有关如何调试的任何想法?我已经确认所有文件都在那里并拥有我打算拥有的权限。

请帮忙。如果你这样做,你会帮助一个免费的,开源的,教育性的和有用的应用程序。

1 个答案:

答案 0 :(得分:0)

问题在于如何编译可执行文件。它们需要使用适当支持更新的arm设备的交叉编译器进行编译。我使用的编译器生成的可执行文件只能在arm设备的子集上工作。问题不在于android的不同版本。