我已将一些有用的免费/开源工具移植到 Android。一个是 Octave,另一个是 gnuplot。他们齐心协力,免费(如语音)和免费(如啤酒)提供类似 Matlab 的功能。我以一种有趣的方式将它们打包在应用程序中。具体来说,
1) 我在 libs/armeabi 目录中包含可执行文件和共享库。由于 android 命名约定,必须给他们取一个有趣的名字。
2)我创建目录bin
/ 和mylib/
. 我给他们完全的权限。
3)我bin/
在解压lib/
目录中创建指向可执行文件的链接。我给他们正确的名字和完整的权限。
4)我mylib/
在解压lib/
目录中创建指向共享库的链接。我给他们正确的名字和完整的权限。
5)然后我使用ld-linux.so.3
哪个是现在目录中的库之一,以及指向mylib/
目录的选项以从 Android 终端模拟器启动可执行文件。--library-path
mylib/
Octave 在所有版本的 Android 中都能完美运行,但当我尝试在仅运行 Jelly Bean 时启动它时,gnuplot 会出现此错误:
error while loading shared libraries: gnuplot: failed to map segment
from shared object: Operation not permitted.
那么,为什么这两个可执行文件之一以相同的方式出现此错误?为什么只在果冻豆中?此外,在 JB 上,如果我让自己成为超级用户,一切都会再次起作用。
关于如何调试的任何想法?我已经确认所有文件都在那里,并且拥有我希望他们拥有的权限。
请帮忙。如果你这样做,你将帮助一个免费、开源、教育和有用的应用程序。