我需要在以下dir中包含一些特定于平台的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
update 这是jni.h
#include "jni_md.h"
现在他们如何期望找到 - 如果不是
#include <jni_md.h>
更新更新每个Arkadiusz Drabczyk
和他提供的链接http://gcc.gnu.org/onlinedocs/cpp/cpp/include-syntax.html都应该可以。实际上,行为似乎是相同的。
Note 如果我将include/linux/*.h
下的文件复制到父 include
dir,则编译工作:因此,仅问题是包括路径。
yau (又是另一个更新(,我尝试了clang
:同样的错误。
可能有可能,但不可能在目录字符串上需要拖延斜线。jni.h包括&lt; jni_md.h>还是" jni_md.h" ??
事实证明,选项的顺序正在混乱:我有
-I<something> -odmaserver.so -I<something else>
它需要为
-I<something> -I<something else> -odmaserver.so