On 4/20/2009 3:49 PM, Peter O'Gorman wrote:
John Calcote wrote:
On 4/18/2009 3:08 PM, LCID Fire wrote:
I'm currently stuck with compiling a JNI library, which java does not
recognize. I'm not too sure about what options I have to provide to
automake and which are already builtin. Does anybody know an example
of how a jni lib is built using automake?
There are basically two steps to building JNI libraries:
Note that on Mac OS X 10.4 and earlier, java will not load modules that
do not have a ".jnilib" extension, so you should add somewhere in
configure.ac, something like:
case $host_os in
*-darwin*)
JNI_EXTRA_LDFLAGS="-shrext .jnilib" ;;
esac
AC_SUBST(JNI_EXTRA_LDFLAGS)
then in your Makefile.am you can have:
mylib_la_LDFLAGS = -module -avoid-version $(JNI_EXTRA_LDFLAGS)
Peter
Thanks Peter, I didn't know this. I guess it won't be long before this
isn't really an issue for newer macs, as 10.6 will probably be released
in June, thereby bringing 10.4 to end-of-life state. However, there will
still be plenty of older mac users out there.
I might as well ask this question here: We build a regular C/C++ shared
library, and link our JNI stubs right into it, exporting the JNI
interfaces right along side the native library interfaces. It seems to
work well on the platforms we've tried it out on, and it saves a
library. In fact, we do the same thing with our C# (mono) interfaces, so
this library has a hefty exported API.
Besides the issue you pointed out above where JNI libs require a
specific extension, do you know of any other issues with doing this sort
of thing?
Thanks in advance,
John