2016-05-04 11 views
3

Bei der Ausführung gcc Befehl auf Ubuntu zum Generieren von .a oder .so-Datei für JNI, erhalten Fehler unten für beide openjdk 8/oraclejdk8.Schwerwiegender Fehler: jni_md.h: Keine solche Datei oder Verzeichnis #include "jni_md.h"

$gcc -I/usr/lib/jvm/java-8-openjdk-amd64/include -c MainImpl1.c -o MainImpl1.o 

In file included from MainImpl1.c:1:0: 
/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:45:20: fatal error: jni_md.h: No such file or directory 
#include "jni_md.h" 
       ^
compilation terminated. 

$gcc -I/usr/lib/jvm/java-8-oracle/include -c MainImpl1.c -o MainImpl1.o 

In file included from MainImpl1.c:1:0: 
/usr/lib/jvm/java-8-oracle/include/jni.h:45:20: fatal error: jni_md.h: No such file or directory 
#include "jni_md.h" 
       ^
compilation terminated. 

Ich habe Beispiel für das Generieren von .a-Datei, aber das gleiche Problem für die .so-Datei-Generation auch beobachtet.

Aber dasselbe gcc Befehl funktioniert für openjdk7/oraclejdk7.

Was ist das Problem hier?

Antwort

6

Ich denke, dass Sie kein Include-Verzeichnis hinzugefügt haben, das jni_md.h enthält, das platform dependent ist.

Versuchen

$gcc -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux -c MainImpl1.c -o MainImpl1.o 

oder

$gcc -I/usr/lib/jvm/java-8-oracle/include -I/usr/lib/jvm/java-8-oracle/include/linux -c MainImpl1.c -o MainImpl1.o 

Wenn Sie nicht wissen, wo jni_md.h ist, verwenden find:

find/-name jni_md.h 2> /dev/null 
Verwandte Themen