Vowpal wabbit 与 Java / JNI 使用 linux 预编译二进制文件
Vowpal wabbit with Java / JNI using the linux precompiled binaries
我第一次测试 vowpal_wabbit 基本上,我将在 Docker 容器上执行它,所以我下载了这里建议的预编译版本 official download page 显然它在我的容器内按预期工作。
事实证明,我打算使用 Java 并调用 VW-Wabbit(虽然不容易,但选项是使用 JNI - 后来检查了由 Indeed 人员创建的包装器).但是,如果我在尝试加载本机库时使用预编译,它不会找到它(一旦我没有做任何事情 compile/make/whatever),对吧?
鉴于:
static {
System.loadLibrary("vw_jni");
}
我想 Java 正试图到达我的 Linux: "vw_jni" -> "vw_jni.so" 因为我没有编译,我没有。
提前致谢,
我在这里漏掉了什么吗?
问题是autogen.sh
的使用。
autogen.sh
仅作为可能 unfamiliar/unsupported 环境的最后手段提供,其中提供的 Makefile
(和子目录 */Makefile
s)可能无法工作。
除其他外,autogen.sh
调用 GNU automake
覆盖 Makefile
(基于对环境的探测)。
要生成 JNI,您需要 运行 make java
使用源代码附带的 原始 Makefile。
如果您已经覆盖了 Makefile,不用担心!您可以通过键入以下内容轻松恢复原件:
git checkout Makefile */Makefile
# Now you can
make java
导致良好的 vw java 包装:java/target/libvw_jni.so
我第一次测试 vowpal_wabbit 基本上,我将在 Docker 容器上执行它,所以我下载了这里建议的预编译版本 official download page 显然它在我的容器内按预期工作。
事实证明,我打算使用 Java 并调用 VW-Wabbit(虽然不容易,但选项是使用 JNI - 后来检查了由 Indeed 人员创建的包装器).但是,如果我在尝试加载本机库时使用预编译,它不会找到它(一旦我没有做任何事情 compile/make/whatever),对吧?
鉴于:
static {
System.loadLibrary("vw_jni");
}
我想 Java 正试图到达我的 Linux: "vw_jni" -> "vw_jni.so" 因为我没有编译,我没有。
提前致谢, 我在这里漏掉了什么吗?
问题是autogen.sh
的使用。
autogen.sh
仅作为可能 unfamiliar/unsupported 环境的最后手段提供,其中提供的 Makefile
(和子目录 */Makefile
s)可能无法工作。
除其他外,autogen.sh
调用 GNU automake
覆盖 Makefile
(基于对环境的探测)。
要生成 JNI,您需要 运行 make java
使用源代码附带的 原始 Makefile。
如果您已经覆盖了 Makefile,不用担心!您可以通过键入以下内容轻松恢复原件:
git checkout Makefile */Makefile
# Now you can
make java
导致良好的 vw java 包装:java/target/libvw_jni.so