include path 는 어디서 정해 지는 거죠?
      글쓴이: quintus / 작성시간: 일, 2005/02/13 - 5:30오후    
  
  C 프로그램 짤 때 보면 #include 해 주는데
기본 설정이 /usr/include 밑에서 파일을 찾아 오잖아요.
그런데 그게 어디서 정해 지는거죠? 
커널 컴파일 할 때도 항상 linux asm scsi 의 심볼릭 링크를 만들어 줬는데 그냥 습관적으로 했었거든요
vim 에서 set path 해 보면 /usr/inlucde 라고 나오긴 하는데 그거 때문에 그런건가요?
아님 $PATH 처럼 설정해 주는 파일이 있는 건지?
Forums: 


gcc의 경우 cpp 프로그램에 hardcoding되어 있습니다. (더
gcc의 경우 cpp 프로그램에 hardcoding되어 있습니다. (더 정확히는 cpp가 부르는 cpp0 프로그램에..)
-I 옵션을 통해서.. 지정도 가능합니다..
-I 옵션을 통해서.. 지정도 가능합니다..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
gcc로 가정하고 설명하면,태영님이 말씀하신 것처럼 -I opti
gcc로 가정하고 설명하면,
태영님이 말씀하신 것처럼 -I option을 써서 지정할 수 있으며 (여러 디렉토리를 지정하기 위해, 여러 번 사용 가능), C_INCLUDE_PATH 환경 변수를 써서 지정할 수도 있습니다 (포맷은 PATH와 동일).
참고로 C++ include path를 지정하기 위해서 CPLUS_INCLUDE_PATH를 쓰기도 합니다.
실제 gcc가 어떤 path에서 헤더 파일을 읽어오는지 알고 싶다면, gcc를 실행할 때 -v option을 쓰면 됩니다:
$ cat hello.c #include <stdio.h> int main(void) { printf("hello, world\n"); return 0; } $ gcc -v hello.c Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/specs Configured with: /var/tmp/portage/gcc-3.3.5-r1/work/gcc-3.3.5/configure --enable-version-specific-runtime-libs --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.3.5 --includedir=/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.3.5 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.3.5/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.3.5/info --with-gxx-include-dir=/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/include/g++-v3 --host=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --enable-shared --enable-threads=posix --disable-multilib --disable-libgcj --enable-languages=c,c++,f77 Thread model: posix gcc version 3.3.5 (Gentoo Linux 3.3.5-r1, ssp-3.3.2-3, pie-8.7.7.1) /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/cc1 -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=5 hello.c -quiet -dumpbase hello.c -auxbase hello -version -o /tmp/ccV5z9jh.s GNU C version 3.3.5 (Gentoo Linux 3.3.5-r1, ssp-3.3.2-3, pie-8.7.7.1) (i686-pc-linux-gnu) compiled by GNU C version 3.3.5 (Gentoo Linux 3.3.5-r1, ssp-3.3.2-3, pie-8.7.7.1). GGC heuristics: --param ggc-min-expand=90 --param ggc-min-heapsize=113145 ignoring nonexistent directory "/usr/local/include" ignoring nonexistent directory "/usr/i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/include /usr/include End of search list. /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/../../../../i686-pc-linux-gnu/bin/as -V -Qy -o /tmp/cck4wARC.o /tmp/ccV5z9jh.s GNU assembler version 2.15.92.0.2 (i686-pc-linux-gnu) using BFD version 2.15.92.0.2 20040927 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/../../../crt1.o /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/../../../crti.o /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/crtbegin.o -L/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5 -L/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/../../../../i686-pc-linux-gnu/lib -L/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/../../.. /tmp/cck4wARC.o -lgcc -lgcc_eh -lc -lgcc -lgcc_eh /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/crtend.o /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/../../../crtn.o $ _C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기