解決 fatal error: jni_md.h: No such file or directory #include “jni_md.h”


在Linux系統下使用jdk1.8編譯項目時,遇到如下問題:

原因:

好像是 #include "jni_md.h"會將文件包含在與jni.h相同的目錄中,但是現在找不到了。

解決辦法

在以前的JDK版本中,jni_md.h 似乎和另一個文件都位於include / linux文件夾中,但是include中都有指向這兩個文件的符號鏈接。
於是,先在本地系統查找jni_md.h文件的位置,使用如下命令:

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

在我的系統里,找到jni_md.h的路徑為:

/usr/lib/jvm/jdk1.8.0_221/include/linux/jni_md.h

果然在include/linux文件夾下,因此,可以僅創建如下兩個文件的符號鏈接:

$ sudo ln -s /usr/lib/jvm/jdk1.8.0_221/include/linux/jni_md.h /usr/lib/jvm/jdk1.8.0_221/include/jni_md.h
$ sudo ln -s /usr/lib/jvm/jdk1.8.0_221/include/linux/jawt_md.h /usr/lib/jvm/jdk1.8.0_221/include/jawt_md.h

最后順利解決該問題!

補充

上述問題還有一種解決辦法,可以修改項目的makefile文件,在編譯選項中加入:

-I$(JAVA_HOME)/include/linux/

這種辦法從項目層面來解決,如果只針對項目本身,選擇該方法較好。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM