java - 如何编译具有 native 功能的 c 文件以通过 JNI 连接?

标签 java gcc java-native-interface native-code

我按照 java.sun.com 中的示例构建示例 jni 应用程序,但遇到了问题。我打算将unix与gcc一起使用。如何使用 native 函数编​​译 *.c 文件以获得库?我会使用什么参数?有很多,我很困惑。

最佳答案

我使用下面的makefile来编译。 只需从命令行输入 make 即可。

TARGET = myagent
CC = gcc

# linux config
JDK = /usr/local/share/jdk1.6.0_20
CFLAGS=-Wall -I$(IDIR) -shared -DLINUX -I$(JDK)/include/linux -I$(JDK)/include


COMPILE = $(CC) $(CFLAGS) -c
OBJDIR = obj
SOURCES := $(wildcard *.c)
DEPS := $(wildcard *.h)
OBJFILES := $(addprefix $(OBJDIR)/, $(patsubst %.c, %.o, $(SOURCES)))

exe: $(OBJFILES)
    $(CC) $(OBJFILES) -shared -o $(TARGET)

$(OBJDIR)/%.o : %.c $(DEPS)
$(COMPILE) -o $@ $<

关于java - 如何编译具有 native 功能的 c 文件以通过 JNI 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7462353/

相关文章:

java - 如何使用 TestNG 使用 @Test 按顺序运行前三个方法,并使用 @Test 并行运行接下来的三个方法?

c - ld.so.1 中的 ELDK gcc 链接器错误

c - 填充问题? (中/海湾合作委员会)

android - 调用独立原生库中的原生库方法

java - 使用 System.loadLibrary() 时加载 dll 错误

java - 值始终为空

java - 如何在 android 中获取 INFLATED View 的 id?

java - Hadoop MapReduce 作业在本地无法加载库并且在 OS X 上连接失败

c++ - 如果我按值从函数返回一个 STL 容器,GCC 会单独复制所有元素吗?

我可以将 native 原始类型转换为 JNI 原始类型而不用担心字节顺序吗?