--sysroot=dir Use dir as the logical root directory for headers and libraries. For example, if the compiler would normally search for headers in /usr/include and libraries in /usr/lib, it will instead search dir/usr/include and dir/usr/lib. If you use both this option and the -isysroot option, then the --sysroot option will apply to libraries, but the -isysroot option will apply to header files. The GNU linker (beginning with version 2.16) has the necessary support for this option. If your linker does not support this option, the header file aspect of --sysroot will still work, but the library aspect will not. -isysroot dir This option is like the --sysroot option, but applies only to header files. See the --sysroot option for more information. [링크 : http://linux.die.net/man/1/gcc] |
기본값은 /usr/include 인데, -sysroot로 기본 디렉토리를 변경 시키면
<stdio.h> 와 같은 파일도 찾지 못해 link 에러를 발생시키며 컴파일이 실패된다.
$ more test.c #include <stdio.h> int main(int argc, char **argv) { printf("hello world\n"); return 0; } |
$ gcc --sysroot=/ test.c /usr/bin/ld: this linker was not configured to use sysroots collect2: ld returned 1 exit status |
아무튼, 크로스컴파일과 같이 특정 include 디렉토리를 사용해야 할 경우,
--sysroot 를 이용해서 변경하면 될 듯 하다
'프로그램 사용 > gcc' 카테고리의 다른 글
gcc로 정적 컴파일 하기 (static compile using gcc) (0) | 2010.02.11 |
---|---|
gcc 에서 지원하는 언어목록 알아보기 (support languages of GCC) (4) | 2010.02.10 |
gcc 매크로만 확장하기 (preprocessor/전처리기) (0) | 2010.01.27 |
gcc 전용 switch - case 문? (0) | 2009.05.28 |
문자열에 콘트롤 문자 넣기 (0) | 2009.02.18 |