Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 Oct 1999 20:52:54 -0500 (EST)
From:      "Andrew B. Sudell" <asudell@acm.org>
To:        dave howard <onedave@onebox.com>
Cc:        freebsd-java@FreeBSD.ORG
Subject:   Re: JNI error involving mmap
Message-ID:  <14364.61066.826599.262962@vega.sudell.org>
In-Reply-To: <199911010045.RAA13238@mt.sri.com>
References:  <19991101003226.VJYK19495.mta02@onebox.com> <199911010045.RAA13238@mt.sri.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Nate Williams writes:
 > > thanks for the tip.  i had not been compiling with the PIC option as
 > > you suggest, however doing it that way seems to have no effect on the
 > > error i'm getting.  any other ideas?
 > 
 > You also need to give the linker a bunch of flags to build a correctly
 > functioning shlib, but as I said before, someone else may know the magic
 > incantation.
 > 
 > I'm 99% positive you shared library is in-correct, and -pic as well as a
 > number of other options must be used to get a correctly function shlib.
 > 

I haven't had to do this in a long time (FreeBSD 2.2.7, JDK 1.0.X, old 
pre-JNI native interface, a.out), but  I'll try to cover the differences,
unless someone with more recent experience jumps in.

Nate's story sounds about right, though there's not a whole lot of stuff
you need to build a shlib.  First build all objects with position
independent code (-fpic in most cases or -fPIC if needed for "large
displacement branches).  I'd go with -fpic, and if things don't get
better, try -fPIC, which can't hurt, only slow down function
calls. Next link the objects into a shared object. When I last did
this the the linker options was -Bshareable.  A quick look at ld,
shows that is likely to still work but the man page is pushing -shared
as the preferred way. 

One thing you might try, as a way of checking your library outside of
java is to manually load it with dlopen(), and call a function or two
after resolving them with dlsym().  That's essentially what JNI is
doing under the covers.

Drew
-- 
        Drew Sudell     asudell@op.net      http://www.op.net/~asudell


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-java" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?14364.61066.826599.262962>