GCC目录选项--isystem

时间:2011-04-27 09:11:26

标签: gcc

从此链接: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将被赋予正常系统目录的优先级?

1 个答案:

答案 0 :(得分:24)

documentation说:

  

-isystem dir

     

在-I指定的所有目录之后但在标准系统目录之前搜索dir以查找头文件。将其标记为系统目录,以便获得与应用于标准系统目录相同的特殊处理。如果dir以=开头,那么=将被sysroot前缀替换;看--sysroot和-isysroot。

所以你错了。您需要为-isystem选项本身指定一个目录,它不像您似乎正在尝试的-I选项的“修饰符”那样工作。

我相信你的命令应该是:

$ gcc -isystem ../include hello.c

System headers获得特殊待遇w.r.t.警告(因为它们是只读的,有些不能用严格符合的代码编写)