Wil*_*voy 5 java linux java-native-interface gcc fuse
我正在尝试在 Fedora 机器上构建一个 java 项目 http://sourceforge.net/projects/fuse-j/?source=typ_redirect。编译 JNI 绑定时编译失败。
生成文件
include ../build.conf
include ../jvm_ldpath.def
SRCS := javafs.c javafs_bindings.c
HDRS := javafs.h javafs_bindings.h
LIB_SO := libjavafs.so
INCLUDES := -I${FUSE_HOME}/include -I${JDK_HOME}/include -I${JDK_HOME}/include/linux
LDPATH := ${LDPATH} -L${FUSE_HOME}/lib
all: ${LIB_SO}
${LIB_SO}: ${SRCS} ${HDRS}
gcc -fPIC -shared -D_FILE_OFFSET_BITS=64 -o ${LIB_SO} ${INCLUDES} ${LDPATH} -ljvm -lfuse -lpthread ${SRCS}
clean:
rm -f ${LIB_SO}
Run Code Online (Sandbox Code Playgroud)
错误:
/bin/ld: cannot find -ljvm
collect2: error: ld returned 1 exit status
Makefile:17: recipe for target 'libjavafs.so' failed
make[1]: *** [libjavafs.so] Error
Run Code Online (Sandbox Code Playgroud)
JDK_HOME ,FUSE_HOME 设置正确。你能建议这里有什么问题吗?
jvm 共享库将在 下的路径中找到$JDK_HOME
,但是,您没有将该路径添加到LDPATH
make 变量中。您需要添加-L${JDK_HOME}/lib
到LDPATH
(或libjvm.so
找到的任何地方)。