Java 如何修复致命错误jvmti.h没有这样的文件或目录编译终止了ubuntu的c代码?
如何修复致命错误jvmti.h没有这样的文件或目录编译终止了ubuntu的c代码?我的c代码是: 包括“jvmti.h” JNIEXPORT jint JNICALL代理程序\u OnLoad(JavaVM*jvm,char*选项,void*保留) { /*我们返回JNI_OK以表示成功*/ printf(“\n我的名字是,\n\n”) 返回JNI_OK } JNIEXPORT void JNICALL 代理OnUnload(JavaVM*vm) { } 在终端中键入此命令:gcc-Wall-W-Werror first_agent.c-o firstagent first_agent.c:1:19:致命错误:jvmti.h:没有终止此类文件或目录编译 其中java jdk版本 JavaC1.7.0_25 其中gcc版本gcc版本4.7.3(Ubuntu/Linaro 4.7.3-2ubuntu4)Java 如何修复致命错误jvmti.h没有这样的文件或目录编译终止了ubuntu的c代码?,java,c,ubuntu,gcc,jvmti,Java,C,Ubuntu,Gcc,Jvmti,如何修复致命错误jvmti.h没有这样的文件或目录编译终止了ubuntu的c代码?我的c代码是: 包括“jvmti.h” JNIEXPORT jint JNICALL代理程序\u OnLoad(JavaVM*jvm,char*选项,void*保留) { /*我们返回JNI_OK以表示成功*/ printf(“\n我的名字是,\n\n”) 返回JNI_OK } JNIEXPORT void JNICALL 代理OnUnload(JavaVM*vm) { } 在终端中键入此命令:gcc-Wall-W
这里应该将gcc版本更新到4.8?您需要使用
-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已经提到的,您需要指定“包含目录” 对于Ubuntu15.04上的Java8,我在
- /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
谢谢Gyro Gearless,但我不明白。。。iam使用的是Ubuntu13.04而不是windows…gcc在Linux和windows上的行为类似。不幸的是,我手头没有Linux设备,但您可能会在这里找到一些更好的示例: