hc
2023-05-26 a23f51ed7a39e452c1037343a84d7db1ca2c5bd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1987-2016 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation.  A copy of
the license is included in the
section entitled "GNU Free Documentation License".
 
This manual contains no Invariant Sections.  The Front-Cover Texts are
(a) (see below), and the Back-Cover Texts are (b) (see below).
 
(a) The FSF's Front-Cover Text is:
 
A GNU Manual
 
(b) The FSF's Back-Cover Text is:
 
You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>The C Preprocessor: Search Path</title>
 
<meta name="description" content="The C Preprocessor: Search Path">
<meta name="keywords" content="The C Preprocessor: Search Path">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Index-of-Directives.html#Index-of-Directives" rel="index" title="Index of Directives">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Header-Files.html#Header-Files" rel="up" title="Header Files">
<link href="Once_002dOnly-Headers.html#Once_002dOnly-Headers" rel="next" title="Once-Only Headers">
<link href="Include-Operation.html#Include-Operation" rel="prev" title="Include Operation">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Search-Path"></a>
<div class="header">
<p>
Next: <a href="Once_002dOnly-Headers.html#Once_002dOnly-Headers" accesskey="n" rel="next">Once-Only Headers</a>, Previous: <a href="Include-Operation.html#Include-Operation" accesskey="p" rel="prev">Include Operation</a>, Up: <a href="Header-Files.html#Header-Files" accesskey="u" rel="up">Header Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html#Index-of-Directives" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Search-Path-1"></a>
<h3 class="section">2.3 Search Path</h3>
 
<p>GCC looks in several different places for headers.  On a normal Unix
system, if you do not instruct it otherwise, it will look for headers
requested with <code>#include&nbsp;&lt;<var>file</var>&gt;<!-- /@w --></code> in:
</p>
<div class="smallexample">
<pre class="smallexample">/usr/local/include
<var>libdir</var>/gcc/<var>target</var>/<var>version</var>/include
/usr/<var>target</var>/include
/usr/include
</pre></div>
 
<p>For C++ programs, it will also look in
<samp><var>libdir</var>/../include/c++/<var>version</var></samp>,
first.  In the above, <var>target</var> is the canonical name of the system
GCC was configured to compile code for; often but not always the same as
the canonical name of the system it runs on.  <var>version</var> is the
version of GCC in use.
</p>
<p>You can add to this list with the <samp>-I<var>dir</var></samp> command-line
option.  All the directories named by <samp>-I</samp> are searched, in
left-to-right order, <em>before</em> the default directories.  The only
exception is when <samp>dir</samp> is already searched by default.  In
this case, the option is ignored and the search order for system
directories remains unchanged.
</p>
<p>Duplicate directories are removed from the quote and bracket search
chains before the two chains are merged to make the final search chain.
Thus, it is possible for a directory to occur twice in the final search
chain if it was specified in both the quote and bracket chains.
</p>
<p>You can prevent GCC from searching any of the default directories with
the <samp>-nostdinc</samp> option.  This is useful when you are compiling an
operating system kernel or some other program that does not use the
standard C library facilities, or the standard C library itself.
<samp>-I</samp> options are not ignored as described above when
<samp>-nostdinc</samp> is in effect.
</p>
<p>GCC looks for headers requested with <code>#include&nbsp;&quot;<var>file</var>&quot;<!-- /@w --></code>
first in the directory containing the current file, then in the
directories as specified by <samp>-iquote</samp> options, then in the same
places it would have looked for a header requested with angle
brackets.  For example, if <samp>/usr/include/sys/stat.h</samp> contains
<code>#include&nbsp;&quot;types.h&quot;<!-- /@w --></code>, GCC looks for <samp>types.h</samp> first in
<samp>/usr/include/sys</samp>, then in its usual search path.
</p>
<p>&lsquo;<samp>#line</samp>&rsquo; (see <a href="Line-Control.html#Line-Control">Line Control</a>) does not change GCC&rsquo;s idea of the
directory containing the current file.
</p>
<p>You may put <samp>-I-</samp> at any point in your list of <samp>-I</samp> options.
This has two effects.  First, directories appearing before the
<samp>-I-</samp> in the list are searched only for headers requested with
quote marks.  Directories after <samp>-I-</samp> are searched for all
headers.  Second, the directory containing the current file is not
searched for anything, unless it happens to be one of the directories
named by an <samp>-I</samp> switch.  <samp>-I-</samp> is deprecated, <samp>-iquote</samp>
should be used instead.
</p>
<p><samp>-I. -I-</samp> is not the same as no <samp>-I</samp> options at all, and does
not cause the same behavior for &lsquo;<samp>&lt;&gt;</samp>&rsquo; includes that &lsquo;<samp>&quot;&quot;</samp>&rsquo;
includes get with no special options.  <samp>-I.</samp> searches the
compiler&rsquo;s current working directory for header files.  That may or may
not be the same as the directory containing the current file.
</p>
<p>If you need to look for headers in a directory named <samp>-</samp>, write
<samp>-I./-</samp>.
</p>
<p>There are several more ways to adjust the header search path.  They are
generally less useful.  See <a href="Invocation.html#Invocation">Invocation</a>.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Once_002dOnly-Headers.html#Once_002dOnly-Headers" accesskey="n" rel="next">Once-Only Headers</a>, Previous: <a href="Include-Operation.html#Include-Operation" accesskey="p" rel="prev">Include Operation</a>, Up: <a href="Header-Files.html#Header-Files" accesskey="u" rel="up">Header Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html#Index-of-Directives" title="Index" rel="index">Index</a>]</p>
</div>
 
 
 
</body>
</html>