- 论坛徽章:
- 1
|
unix 下C 语言 include 搜索的路径的设置在什么地方啊
我把gcc设置默认搜索目录的程序放这里,
有兴趣研究一下吧,我也没怎么看。
这是gcc-3.4.3
cppdefault.h
- /* CPP Library.
- Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2003 Free Software Foundation, Inc.
- Contributed by Per Bothner, 1994-95.
- Based on CCCP program by Paul Rubin, June 1986
- Adapted to ANSI C, Richard Stallman, Jan 1987
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
- #ifndef GCC_CPPDEFAULT_H
- #define GCC_CPPDEFAULT_H
- /* This is the default list of directories to search for include files.
- It may be overridden by the various -I and -ixxx options.
- #include "file" looks in the same directory as the current file,
- then this list.
- #include <file>; just looks in this list.
- All these directories are treated as `system' include directories
- (they are not subject to pedantic warnings in some cases). */
- struct default_include
- {
- const char *const fname; /* The name of the directory. */
- const char *const component; /* The component containing the directory
- (see update_path in prefix.c) */
- const char cplusplus; /* Only look here if we're compiling C++. */
- const char cxx_aware; /* Includes in this directory don't need to
- be wrapped in extern "C" when compiling
- C++. */
- const char add_sysroot; /* FNAME should be prefixed by
- cpp_SYSROOT. */
- };
- extern const struct default_include cpp_include_defaults[];
- extern const char cpp_GCC_INCLUDE_DIR[];
- extern const size_t cpp_GCC_INCLUDE_DIR_len;
- extern const char *cpp_SYSROOT;
- #endif /* ! GCC_CPPDEFAULT_H */
复制代码
cppdefault.c
- /* CPP Library.
- Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2003 Free Software Foundation, Inc.
- Contributed by Per Bothner, 1994-95.
- Based on CCCP program by Paul Rubin, June 1986
- Adapted to ANSI C, Richard Stallman, Jan 1987
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
- #include "tm.h"
- #include "cppdefault.h"
- #ifndef STANDARD_INCLUDE_DIR
- #define STANDARD_INCLUDE_DIR "/usr/include"
- #endif
- #ifndef STANDARD_INCLUDE_COMPONENT
- #define STANDARD_INCLUDE_COMPONENT 0
- #endif
- #if defined (CROSS_COMPILE) && !defined (TARGET_SYSTEM_ROOT)
- # undef LOCAL_INCLUDE_DIR
- # undef SYSTEM_INCLUDE_DIR
- # undef STANDARD_INCLUDE_DIR
- #else
- # undef CROSS_INCLUDE_DIR
- #endif
- const struct default_include cpp_include_defaults[]
- #ifdef INCLUDE_DEFAULTS
- = INCLUDE_DEFAULTS;
- #else
- = {
- #ifdef GPLUSPLUS_INCLUDE_DIR
- /* Pick up GNU C++ generic include files. */
- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0 },
- #endif
- #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
- /* Pick up GNU C++ target-dependent include files. */
- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0 },
- #endif
- #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
- /* Pick up GNU C++ backward and deprecated include files. */
- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0 },
- #endif
- #ifdef LOCAL_INCLUDE_DIR
- /* /usr/local/include comes before the fixincluded header files. */
- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1 },
- #endif
- #ifdef PREFIX_INCLUDE_DIR
- { PREFIX_INCLUDE_DIR, 0, 0, 1, 0 },
- #endif
- #ifdef GCC_INCLUDE_DIR
- /* This is the dir for fixincludes and for gcc's private headers. */
- { GCC_INCLUDE_DIR, "GCC", 0, 0, 0 },
- #endif
- #ifdef CROSS_INCLUDE_DIR
- /* One place the target system's headers might be. */
- { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0 },
- #endif
- #ifdef TOOL_INCLUDE_DIR
- /* Another place the target system's headers might be. */
- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0 },
- #endif
- #ifdef SYSTEM_INCLUDE_DIR
- /* Some systems have an extra dir of include files. */
- { SYSTEM_INCLUDE_DIR, 0, 0, 0, 1 },
- #endif
- #ifdef STANDARD_INCLUDE_DIR
- /* /usr/include comes dead last. */
- { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1 },
- #endif
- { 0, 0, 0, 0, 0 }
- };
- #endif /* no INCLUDE_DEFAULTS */
- #ifdef GCC_INCLUDE_DIR
- const char cpp_GCC_INCLUDE_DIR[] = GCC_INCLUDE_DIR;
- const size_t cpp_GCC_INCLUDE_DIR_len = sizeof GCC_INCLUDE_DIR - 8;
- #else
- const char cpp_GCC_INCLUDE_DIR[] = "";
- const size_t cpp_GCC_INCLUDE_DIR_len = 0;
- #endif
- #ifdef TARGET_SYSTEM_ROOT
- const char *cpp_SYSROOT = TARGET_SYSTEM_ROOT;
- #else
- const char *cpp_SYSROOT = "";
- #endif
复制代码 |
|