gcc: 如何忽略标准 include 路径?

51

我需要使用修改过的标准库头文件编译一些文件。在使用Visual C++编译器时,我会使用/X(忽略标准包含路径)/I(附加包含目录)参数来实现这一点。那么如何使用gcc实现呢?

2个回答

71
gcc -nostdinc -I/custom/include/path/goes/here

-nostdinc忽略标准的C语言头文件目录
-nostdinc++忽略标准的C++语言头文件目录


不是直接相关的问题,但有没有办法给标准包含文件最低的优先级..? - Ramesh-X
1
@Ramesh-X,如果使用“-I”指定了任何内容,则应自动优先于标准包含文件,如我所知。 - Hintron

11
如果您在命令行中添加-I,则可以看到(特别是如果您还添加了-v),gcc将首先查找这些文件夹,然后查找其他文件夹。因此,您无需添加--nostdinc)即可使用另一种STL库。

通过以下方式使用STLPort:

g++ -I path-to-stlport-include main.cpp -L path-to-stlport-lib -lstlport


31
有些情况下最好不要有标准的包含路径,这样就不会包含标准头文件,而是使用我替换时所用的头文件,以防替换文件丢失。在我的观点中,如果出现这种情况导致编译错误比成功编译但行为混乱要好得多。 - okutane
一些有关gcc的文档:https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gcc/Directory-Options.html#Directory-Options - MariuszW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接