Java 编译错误 :/bin/ld:cannot find -ljvm

标签 java linux gcc java-native-interface fuse

我正在尝试构建一个 Java 项目 http://sourceforge.net/projects/fuse-j/?source=typ_redirect在软呢帽机器上。编译 JNI 绑定(bind)时编译失败。

生成文件

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}

错误:

/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 

JDK_HOME、FUSE_HOME 设置正确。你能指出这里可能有什么问题吗?

最佳答案

jvm 共享库将在 $JDK_HOME 下的路径中找到,但是,您没有将该路径添加到您的 LDPATH make 变量中。您需要将 -L${JDK_HOME}/lib 添加到 LDPATH(或找到 libjvm.so 的任何位置)。

关于Java 编译错误 :/bin/ld:cannot find -ljvm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461416/

相关文章:

java - ScrollBar 和 JTable 选择的问题

c - 第三方C静态库: Add -ffunction-sections -fdata-sections

gcc - 如何使用 autotools 设置特定于编译器的标志

java - 将图像旋转90度说明

java - JSF 中的多个页面不调用支持 bean 更改器(mutator)

linux - 如果 linux 程序以 coredump 退出,未关闭的文件可能会导致资源泄漏

java - 在 Linux 上安装 Java EE SDK 时出现问题

linux - 简单的 bash 行中缺少括号错误?

c - 为什么使用 -O(1/2/3) 选项进行优化会干扰 scanf()?

java - 来自 Eclipse 的 Spring Boot maven 项目在 Intellij 中不起作用