I have ported some useful free / open source tools for Android. One is Octave and the other is gnuplot. They work together in unison to provide Matlab as an opportunity for free (as in speech) and free (as in beer). I compiled them in applications in an interesting way. In particular,
1) I include executable and shared libraries inside the libs / armeabi directory. Must give them a funny name because of android naming conventions.
2) I create the bin / and mylib/ directories. I give them full permissions.
3) I create links from bin/ to the executable in the unpacked lib/ directory. I give them the correct names and full permissions.
4) I create links from mylib/ to shared libraries in the unpacked lib/ directory. I give them the correct names and full permissions.
5) Then I use ld-linux.so.3 , which is one of the libraries in the mylib/ directory and --library-path , to point to the mylib/ directory to run the executable from the Android terminal emulator.
Octave works fine in all versions of Android, but gnuplot gives this error when I try to run it when Jelly Bean starts:
error while loading shared libraries: gnuplot: failed to map segment from shared object: Operation not permitted.
So why do I need this error for one of these two executables to be done the same way? Why only in jelly bean? Also, on JB, if I make myself superuser, everything will work again.
Any thoughts on how to debug? I confirmed that all the files are and have the permissions that I intended them.
Please, help. If you do, you will be helping out with a free, educational and useful open source application.