【发布时间】:2015-05-07 19:19:43
【问题描述】:
我正在使用 linux (Ubuntu) 并尝试从 C 代码创建一个共享库 (.so) 以用于 Java 本机接口 (JNI)。使用简单的 C 代码时,我可以使用以下命令:
gcc -shared -fpic -o Wrapper.so -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -I/usr/lib/jvm/java-7-openjdk-i386/include Wrapper.c
但是,当我尝试将现有库合并到 C 代码中时,例如:
#include <rte_memory.h>
#include <rte_memzone.h>
#include <rte_launch.h>
#include <rte_tailq.h>
#include <rte_eal.h>
#include <rte_per_lcore.h>
#include <rte_lcore.h>
#include <rte_debug.h>
我收到来自这些库的方法的未定义引用错误。我尝试使用 -I 标志为包含库的共享对象文件的目录提供路径,但没有成功。
我应该尝试链接头文件还是共享对象文件 (.so) 以及这些文件应该在哪个目录中?
我应该使用什么工具/命令来生成与 JNI 一起使用所需的共享库?
【问题讨论】:
-
您在什么时候看到了什么错误?
-
不清楚什么时候出现“未定义的引用错误”。您是否在编译或链接或运行时收到错误?
标签: java-native-interface shared-libraries