GCC目录选项--isystem

问题描述 投票:15回答:1

从这个链接:http://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html

如果标准系统包含目录或使用-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将被赋予正常系统目录的优先级?

gcc
1个回答
25
投票

documentation说:

- 系统你

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

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

我相信你的命令应该是:

$ gcc -isystem ../include hello.c

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

© www.soinside.com 2019 - 2024. All rights reserved.