gcc没有在-I指定的目录中查找文件

时间:2017-04-30 17:50:25

标签: c gcc

我需要在以下目录中包含一些特定于平台的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:同样的错误。

2 个答案:

答案 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