gcc - 致命错误:在 Mac OSX 10.15.7 上找不到“jni.h”文件
问题描述
我试图用 C 中的一些库运行一个旧的 java 程序。在运行make
命令时,我一直遇到这个错误,我认为这与JAVA_HOME 设置有关
swig/main_6_comp_wrap.c:154:10:
fatal error: jni.h: No such file or directory
#include <jni.h>
^~~~~~~
在多次尝试使用 Homebrew 安装 JDK、swig 和 gcc 后,它没有成功。我很确定 jni.h 文件位于JAVA_HOME的包含文件夹中。
JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/
JDK_HOME = $(JAVA_HOME)
JRE_HOME = $(JAVA_HOME)
SWIG = swig
CC = gcc
CFLAGS = -O2 -fno-strict-aliasing -Wall -fno-common \
-I/System/Library/Frameworks/JavaVM.framework/Headers/
BUILDLIB = gcc -shared
LIB6 = java/classes/libC6_comp_backend.jnilib
LIB21 = java/classes/libC21_comp_backend.jnilib
系统:MacOS Catalina 10.15.7 swig:3.0.12 gcc:10.2.0
解决方案
您至少需要在 CFLAGS 中-I/System/Library/Frameworks/JavaVM.framework/Headers/
替换为。-I$JAVA_HOME/include
您可能还需要添加-I$JAVA_HOME/include/darwin
.
您还需要更改用于链接.jnilib
推荐阅读
- css - 使用 CSS 强制链接看起来未访问
- python - 更新了已安装的 python 模块以修复错误,现在该怎么办?
- azure - arm模板部署时动态获取管理组id的值
- python - 如何检查字符串的索引是否在多个范围内?
- mongodb - 遵循文档中给出的说明后无法安装 MongoDB
- microsoft-graph-api - 用户的 AllMessages 在 sdk 的最新预览版中消失了
- plsql - 如何在plsql中将对象类型属性的值分配给具有相同属性属性的不同对象类型?
- javascript - 无法在 Angular 中使用授权令牌调用 API
- ruby-on-rails - Rails:无效记录创建后的错误不显示
- lilypond - 如何在 Lilypond 中隐藏度量值?