Help with static linking and UnsatisfiedLinkError
Andrew Haley
aph@cambridge.redhat.com
Mon Jul 22 09:11:00 GMT 2002
Suresh Raman writes:
>
> Here it is, the ldd output of my .so
>
> ldd libCRC.so
> libgcc_s.so.1 => /usr/local/gcc31/lib/libgcc_s.so.1 (0x40003000)
> libc.so.6 => /lib/libc.so.6 (0x4001c000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
>
> Now, if I also copy libgcc_s.so.1 in the directory pointed to by
> LD_LIBRARY_PATH, the program works fine.
>
> Is that all you have to say O' master, or do you have more words of
> your boundless wisdom for my humble self. :-)
Well, it looks to me like your .so needs libgcc_s.so.1 even if your
executable does not. It seems that your problem has been solved; you
will either need to link your .so statically with libgcc or include
libgcc_s.so with your program. What is the problem?
Andrew.
> thanks,
> --Suresh
>
> --- Andrew Haley <aph@cambridge.redhat.com> wrote:
> > Suresh Raman writes:
> > >
> > > Hi,
> > >
> > > I have a simple java program that uses JNI, thereby requiring a
> > > loadLibrary call. It runs fine when I build it using the normal
> > way.
> > > (gcj --main=test test.java).
> > >
> > > I build it using "-static" and it still runs fine, but only if my
> > > LD_LIBRARY_PATH environment variable points to the gcc31
> > installation's
> > > lib directory (/usr/local/gcc31/lib).
> > >
> > > The moment I remove /usr/local/gcc31/lib from my LD_LIBRARY_PATH,
> > (the
> > > path to my JNI implementation .so file is still there), I get a
> > > UnsatisfiedLinkError in the System.loadLibrary() call.
> >
> > What libraries does the native code use? What does "ldd" say about
> > the .so?
> >
> > Andrew.
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Health - Feel better, live better
> http://health.yahoo.com
More information about the Java
mailing list