从此链接:http://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html
如果标准系统包括 目录或指定的目录 with -isystem,也指定了 -I,-I选项将被忽略。该目录仍将被搜索但是 作为正常的系统目录 系统中的位置包括链。
运行此操作的方法是什么?
[14:45:37 Wed Apr 27] ~/junkPrograms/src $gcc hello.c -isystem -I ../include/
../include/: file not recognized: Is a directory
collect2: ld returned 1 exit status
[14:45:42 Wed Apr 27] ~/junkPrograms/src $gcc hello.c -I isystem ../include/
../include/: file not recognized: Is a directory
collect2: ld returned 1 exit status
[14:45:57 Wed Apr 27] ~/junkPrograms/src $
这是否意味着如果附加 -isystem ,dir将被赋予正常系统目录的优先级?
答案 0 :(得分:24)
-isystem dir
在-I指定的所有目录之后但在标准系统目录之前搜索dir以查找头文件。将其标记为系统目录,以便获得与应用于标准系统目录相同的特殊处理。如果dir以=开头,那么=将被sysroot前缀替换;看--sysroot和-isysroot。
所以你错了。您需要为-isystem选项本身指定一个目录,它不像您似乎正在尝试的-I选项的“修饰符”那样工作。
我相信你的命令应该是:
$ gcc -isystem ../include hello.c
System headers获得特殊待遇w.r.t.警告(因为它们是只读的,有些不能用严格符合的代码编写)