1. 程式人生 > >執行so檔案時,出現error while loading shared libraries: libjvm.so: cannot open shared object file...

執行so檔案時,出現error while loading shared libraries: libjvm.so: cannot open shared object file...

出現:error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directoryI

 don't get the errors you report, but there are some things that need

to be fixed:

- main() must return int, not void.

- #include <windows.h> isn't necessary at all, remove it
(anyway I suspect you don't have such a file on linux).


- normally you should include the system header files first, followed
by jni.h and finally your own header files.

- the pragma is unknown to g++

After making the above changes, the code compiles fine using the
following commands:

(compile: invoke.cpp -> invoke.o)
gcc -Wall -D_REENTRANT -I $JAVA_HOME/include -I $JAVA_HOME/include/linux -c invoke.cpp


(link: invoke.o -> invoke)
gcc -L $JAVA_HOME/jre/lib/i386/client invoke.o -lstdc++ -ljvm -lpthread -o invoke

(note that each of these two commands is exactly one line, even though
my newsreader or yours may have broken them)

To run the program you need to have the following directories in your
LD_LIBRARY_PATH:


$JAVA_HOME/jre/lib/i386/client
$JAVA_HOME/jre/lib/i386