Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编译具有本机功能的c文件以通过JNI进行连接?_Java_Gcc_Java Native Interface_Native Code - Fatal编程技术网

Java 如何编译具有本机功能的c文件以通过JNI进行连接?

Java 如何编译具有本机功能的c文件以通过JNI进行连接?,java,gcc,java-native-interface,native-code,Java,Gcc,Java Native Interface,Native Code,我遵循java.sun.com中的示例来构建示例jni应用程序,但我遇到了一些问题。我打算将unix与gcc结合使用。如何使用本机函数编译*.c文件以拥有库?我将使用什么参数?有很多,我很困惑。我使用下面的makefile进行编译。 只需在命令行中键入make TARGET = myagent CC = gcc # linux config JDK = /usr/local/share/jdk1.6.0_20 CFLAGS=-Wall -I$(IDIR) -shared -DLINUX -I$

我遵循java.sun.com中的示例来构建示例jni应用程序,但我遇到了一些问题。我打算将unix与gcc结合使用。如何使用本机函数编译*.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 $@ $<
TARGET=myagent
CC=gcc
#linux配置
JDK=/usr/local/share/jdk1.6.0_20
CFLAGS=-Wall-I$(IDIR)-shared-DLINUX-I$(JDK)/include/linux-I$(JDK)/include
编译=$(CC)$(CFLAGS)-c
OBJDIR=obj
来源:=$(通配符*.c)
DEPS:=$(通配符*.h)
OBJFILES:=$(addprefix$(OBJDIR)/,$(patsubst%.c,%.o,$(SOURCES)))
exe:$(OBJFILES)
$(CC)$(OBJFILES)-共享-o$(目标)
$(OBJDIR)/%.o:%.c$(DEPS)
$(编译)-o$@$<

对不起,我误解了你的问题。我假设您要查找的是JNI教程中的信息,而不是C编译器的参数。取消否决票,投赞成票。我还添加了GCC标签,部分原因是它与GCC相关,但主要是为了编辑您的帖子,然后可以更改我的投票。再次抱歉。我应该把这个和我的项目放在一起吗?并将其命名为“makefile”?我有一个愚蠢的错误:user@user:~/jni/hello$make makefile:16:**缺少分隔符。停止