Я пытаюсь вызвать Java от C, и я сделал следующее Makefile:Makefile: ошибка: <jni.h>: Нет такого файла или каталога
include ../../Makefile.defs
auto_gen=
NAME=libproto.so
CC=gcc
CFLAGS= -g -Wall -fPIC
LIBS= -L'$(LD_LIBRARY_PATH)' -ljvm -I"/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64/include/" -I"/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64/include/linux" -I"/usr/local/lib64/kamailio/"
include ../../Makefile.modules
SOURCE=jni_wrapper.c ProtoType.c
OBJECTS=$(SOURCE:.c=.o)
all: $(SOURCE) $(NAME)
%.o: %.c
$(CC) $(CFLAGS) -c $(LIBS) $<
clean:
rm -f $(EXEC); rm -f *~; rm -f .*.swp; rm -f .*.swo; rm -f *.o
java:
javac ProtoType.java
jar cf ProtoType.jar ProtoType.class
javap -s -p ProtoType > sigs.txt
cat sigs.txt
Когда я компилирую с макияж, я получаю сообщение об ошибке, как это:
error: <jni.h>: No such file or directory
Я просмотрел много страниц stackoverflow с аналогичной проблемой, но все они имеют одно и то же решение, которое я уже реализовал. Они сказали, что вам нужно связать путь библиотеки с jni.h.
Как вы можете увидеть в моем Makefile это делается:
LIBS= -L'$(LD_LIBRARY_PATH)' -ljvm -I"/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64/include/" -I"/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64/include/linux" -I"/usr/local/lib64/kamailio/"
Я тройной проверил каталоги и разрешение, и все прекрасно.
Любые предложения?