Creating a shared lib (.so) using the autotools in KDev

David Ohlemacher ohlemacher at bbn.com
Fri Nov 11 19:42:27 GMT 2005


Hi all,

I am trying to create a shared library (.so) using KDevelop 3.2.2 (KDE 
3.4.2 on FC4).  I am trying to use this shared lib from within Java 
using the Java Native Interface (JNI).        Has anyone done this?

According to the mediaWiki FAQ 
<http://www.kdevelop.org/mediawiki/index.php/FAQ#How_to_create_a_.so_library.3F>, 
I need to follow these steps:

    * Add a target to the project
          o primary: Library
          o prefix: noinst
          o file name: your_lib.so
          o Linker Flags->Other: -shared
    * Add the cpp/h files to this target
    * set compiler flags for c++  -fPIC

I did all these things.   The library gets created as 
libJniHelloWorld.so.a, which is wrong. Also, all the options remained 
grayed out when I select the library and noinst options.  I had to apply 
them, then open the properties, in order to add -shared.

When I try to use the library, I get "invalid ELF header" from Java.

If I manually make the library, w/o kdevelop, I get a proper shared lib:
    * gcc -shared -I/opt/j2sdk1.4.2_10/include/ 
-I/opt/j2sdk1.4.2_10/include/linux/ JniHelloWorld.c -o libJniHelloWorld.so
This lib works fine.

I also have created and tried a libtool library, libJniHelloWorld.la.  
The JNI refuses to load this at all, since it only lets you specify 
"JniHelloWorld" and it assumes the lib prefix and .so extension.  I did 
set LD_LIBRARY_PATH to include the pwd.
java.lang.UnsatisfiedLinkError: no libnumlist.la in java.library.path

I either need to get the autotools to create a shared library (.so), or 
get the JNI to load a .la file.

Thanks,
-d




-
to unsubscribe from this list send an email to kdevelop-request at kdevelop.org with the following body:
unsubscribe »your-email-address«



More information about the KDevelop mailing list