>>>>> "Sreenivas" == Sreenivas Gummadidala <[EMAIL PROTECTED]> writes:

    Sreenivas> thanx in advance for ur reply , i wanna a programme to
    Sreenivas> run which is there in jdk1.2.2 tutorial from sun , java
    Sreenivas> native interface, invoking jvm .  i have j2sdk1.3
    Sreenivas> blackdowns java on redhat6.1 ,

    Sreenivas> i am compiling it with 

    Sreenivas> $ gcc -O -I/usr/local/j2sdk1.3/include 
    Sreenivas>          -I/usr/local/j2sdk1.3/include/linux 
    Sreenivas>          -L/usr/local/j2sdk1.3/jre/lib/i386 -ljava 
    Sreenivas>          -shared invoke.c 

Remove the '-shared' option and link with '-ljvm' instead of '-ljava'.
Also add '-lpthread' and '-D_REENTRANT':
Our 1.3 includes j2sdk-config which may help you with this:

% j2sdk-config --cflags
-D_REENTRANT -D_GNU_SOURCE -I/usr/lib/j2sdk1.3/include 
-I/usr/lib/j2sdk1.3/include/linux
% j2sdk-config --libs  
-L/usr/lib/j2re1.3/lib/i386/client -ljvm -lpthread

    Sreenivas>     JDK1_1InitArgs vm_args;

For HotSpot you have to use JavaVMInitArgs instead of JDK1_1InitArgs.

You might want to take a look at the Invocation example in our FAQ:
http://www.blackdown.org/java-linux/docs/support/faq-release/examples/invocation-in-C++/
With j2sdk-config the makefile can be somewhat simpler:

#
#
# See http://www.blackdown.org/java-linux/faq/FAQ-java-linux.html
# for more information.
#
# $Id: Makefile,v 1.1 1999/12/31 16:22:54 kreilede Exp $
#
#

J2SDK_CONFIG=j2sdk-config
#J2SDK_CONFIG=j2sdk-config -server
#J2SDK_CONFIG=j2sdk-config -native
JAVA_HOME=$(shell $(J2SDK_CONFIG) --javahome)

# The java tools:
JAVAC=$(JAVA_HOME)/bin/javac
JAVA=$(JAVA_HOME)/bin/java
JAVAH=$(JAVA_HOME)/bin/javah

CXXFLAGS=$(shell $(J2SDK_CONFIG) --cflags)
LIBS=$(shell $(J2SDK_CONFIG) --libs)

# The java source code
JAVA_SRC = example/HelloWorld.java
# The java class files
JAVA_CLASSES = $(JAVA_SRC:%.java=%.class)

all: helloworld $(JAVA_CLASSES) run

helloworld: helloworld.o
        $(CXX) -o $@ $? $(LIBS)

helloworld.o: helloworld.cpp
        $(CXX) $(CXXFLAGS) -c -o $@ $<

run: helloworld $(JAVA_CLASSES)
        LD_LIBRARY_PATH=$(shell $(J2SDK_CONFIG) --ld-library-path) ./helloworld

example/%.class: example/%.java
        ${JAVA_HOME}/bin/javac $<

clean:
        $(RM) example/*.class example/*~ core *.o *.so *~ ./helloworld


        Juergen

-- 
Juergen Kreileder, Blackdown Java-Linux Team
http://www.blackdown.org/java-linux.html
JVM'01: http://www.usenix.org/events/jvm01/

Reply via email to