如何修复致命错误 jvmti.h 没有这样的文件或目录编译终止 c 代码 ubuntu?

Posted

技术标签:

【中文标题】如何修复致命错误 jvmti.h 没有这样的文件或目录编译终止 c 代码 ubuntu?【英文标题】:how to fix fatal error jvmti.h No such file or directory compilation terminated c code ubuntu? 【发布时间】:2013-11-04 10:22:00 【问题描述】:

我的 c 代码是:

包括“jvmti.h”

JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *jvm, char *options, void *reserved)

/* 我们返回 JNI_OK 表示成功 */ printf("\n我的名字是,\n\n");

返回 JNI_OK;

JNIEXPORT 无效 JNICALL Agent_OnUnload(JavaVM *vm)

在终端输入这个命令:gcc -Wall -W -Werror first_agent.c -o firstagent

first_agent.c:1:19:致命错误:jvmti.h:没有此类文件或目录编译终止。

java jdk版本在哪里 javac 1.7.0_25

其中 gcc 版本 gcc 版本 4.7.3 (Ubuntu/Linaro 4.7.3-2ubuntu4)

这里应该更新gcc版本到4.8?

【问题讨论】:

【参考方案1】:

这个问题现在已经很老了,但将来可能有人会偶然发现这个问题。

正如@Gyro Gearless 已经提到的,您需要指定“包含目录”。

对于 Ubuntu 15.04 上的 Java 8,我在以下位置找到了文件夹

/usr/lib/jvm/java-1.8.0-openjdk-amd64/include /usr/lib/jvm/java-1.8.0-openjdk-amd64/include/linux

在此目录中,您可以找到以下头文件:

classfile_constants.h jawt.h jdwpTransport.h jni.h jvmticmlr.h jvmti.h

编译器需要包含的。

如果您使用的是 Netbeans,您可以通过项目的属性添加这些包含目录:

【讨论】:

【参考方案2】:

您需要使用-I 选项告诉 gcc 在哪里可以找到它的包含文件。这是构建 JNI 库的示例调用。请注意,这是从 Windows 上的一些 Maven 插件自动创建的,所以有点吵:

g++ -m64 -shared -IC:\work\Produktiv\jdpapi\jdpapi-native\src\main\native 
 -IC:\work\Produktiv\jdpapi\jdpapi-native\target\native\javah 
 -IC:\opt\Java\jdk1.7.0_40\jre\..\include 
 -IC:\opt\Java\jdk1.7.0_40\jre\..\include\win32 
 -o C:\work\Produktiv\jdpapi\jdpapi-native\target\objs\DPAPI.obj 
 -c C:\work\Produktiv\jdpapi\jdpapi-native\src\main\native\DPAPI.cpp

请注意,这实际上只是一行;当然,您必须调整 Linux 的路径 :-)

【讨论】:

感谢 Gyro Gearless 但我不明白...我使用的是 ubuntu 13.04 而不是 windows... gcc 在 Linux 和 Windows 上的行为相似。不幸的是,我没有 Linux 机器,但也许你可以在这里找到一些更好的例子:***.com/questions/3950635/…

以上是关于如何修复致命错误 jvmti.h 没有这样的文件或目录编译终止 c 代码 ubuntu?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复:错误:'<filename>' 没有提交检查致命:输入“git add”时添加文件失败。在命令提示符下

linuxCentOS编译程序报错 修复 ./Modules/_ssl.c:64:25: 致命错误:openssl/rsa.h:没有那个文件或目录

跪求 高手解决AutoCad图纸出现内部错误/致命错误!

致命错误 C1083:无法打开包含文件:'io.h':没有这样的文件或目录

致命错误:glib.h:使用 vscode 和 mingw 时没有这样的文件或目录

致命错误 C1083:无法打开包含文件:'boost/regex.hpp':没有这样的文件或目录