Blu*_*ose 5 c java ubuntu gcc jvmti
如何解决致命错误jvmti.h没有这样的文件或目录编译终止c代码ubuntu?我的代码是:
JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM*jvm,char*options,void*reserved){
/*我们返回JNI_OK表示成功*/printf("\n name name,\n \n");
返回JNI_OK;
}
JNIEXPORT void 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?
这个问题现在已经很老了,但将来可能有人会偶然发现这个问题。
正如@Gyro Gearless 已经提到的,您需要指定“包含目录”。
对于 Ubuntu 15.04 上的 Java 8,我在以下位置找到了文件夹
在此目录中,您可以找到以下头文件:
编译器需要包含的内容。
如果您使用的是 Netbeans,则可以通过项目的属性添加这些包含目录:

您需要使用-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
Run Code Online (Sandbox Code Playgroud)
请注意,这实际上只是一行;当然,你必须调整 Linux 的路径:-)
| 归档时间: |
|
| 查看次数: |
2422 次 |
| 最近记录: |