我需要在以下目录中包含一些特定于平台的jni文件:
$ ls -l /home/ubuntu/jdk8/include/linux
total 8
-rw-r--r-- 1 ubuntu ubuntu 995 Mar 15 09:00 jawt_md.h
-rw-r--r-- 1 ubuntu ubuntu 824 Mar 15 09:00 jni_md.h
所以gcc
命令适当地增强了(?):
gcc -I"/home/ubuntu/jdk8/include/linux" -I"$JAVA_HOME/include" ..
但是找不到linux
子目录中的文件:
gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4)
COLLECT_GCC_OPTIONS='-I' '"/home/ubuntu/jdk8/include/linux"' '-I' '/home/ubuntu/jdk8/include' ..
/home/ubuntu/jdk8/include/jni.h:45:20: fatal error: jni_md.h: No such file or directory
那么需要在这里调整什么?如果重要,则在ubuntu
16.0.4`和
gcc --version
gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
更新以下是jni.h
#include "jni_md.h"
现在他们怎么能期望找到它 - 如果不是
#include <jni_md.h>
更新更新每个Arkadiusz Drabczyk
以及他提供的链接http://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html他们都应该没问题。事实上,行为似乎是相同的。
注意如果我将include/linux/*.h
下的文件复制到父include
目录编译工作:那么仅 问题是包含路径。
YAU (又一次更新)Per Arkadiusz我尝试了clang
:同样的错误。
答案 0 :(得分:0)
它可能,但不太可能,它需要在目录字符串上有一个尾部斜杠。 jni.h是否包括&lt; jni_md.h&gt;或“jni_md.h”??
答案 1 :(得分:0)
结果选项的顺序搞砸了:我有
-I<something> -odmaserver.so -I<something else>
需要
-I<something> -I<something else> -odmaserver.so