컴파일러 옵션

|
http://fussion.egloos.com/9674149 동적라이브러리 설명 상세히

MS Visual Studio Compiler

명령어 : cl
>cl test.c
>dir
test.c
test.exe


옵션 :

/P : Preprocessing 후 .i 파일만 생성
>cl /P test.c
>dir
test.c
test.i


/Fa : Compiling 후 .asm 파일, .obj 파일, .exe 파일 생성
>cl /Fa test.c
>dir
test.asm
test.c
test.exe
test.obj


/c : Assembling 후 .obj 파일만 생성
>cl /c test.c
>dir
test.c
test.obj


GCC (GNU Compiler Colletion)

명령어 : gcc
$ gcc test.c
$ ls
a.out  test.c


옵션 :

-E -o 파일명 : Preprocessing 후 .i 파일만 생성 (-o 파일명을 하지 않으면 전처리 내용을 화면에 출력함)
$ gcc -E -o test.i test.c
$ ls
test.c  test.i


-S : Compiling 후 .s 파일만 생성
$ gcc -S test.c
$ ls
test.c  test.s


-c : Assembling 후 .o 파일만 생성
$ gcc -c test.c
$ ls
test.c  test.o


그 외 옵션 :

--save-temps : .i, .s, .o, 실행 파일을 모두 생성

-g : Debugging 정보까지 포함시켜 컴파일

-l : Library 파일이름을 지정 (소문자 엘)

-L : Library가 위치한 디렉토리를 지정

-Wall : 모든 경고 메시지 출력



GCC는 GNU Compiler Collection 의 준 말이지요.  전에는 C Compiler 였으나, C++이나 자바, 포트란 등을 모두 컴파일 할 수 있을 정도로 커져서 컴파일러 콜렉션이라고 바뀌었습니다.

 

GCC는 컴파일러입니다.  컴파일러의 패스를 보면 쉽게 쉽게 이해 됩니다.

 

전처리기 -> 컴파일러 -> 어셈블러 -> 링커

 

이 과정으로 되는 것을 GCC 하나로 모두 진행 시켜서 소스 파일을 실행 파일로 생성 시켜 줍니다.

 

전처리기는 cpp(C pre processor) 이며, 소스 파일의 주석 제거 및 define을 치환하는 기능 등을 합니다.

그다음은 cc 이며, C Compiler 입니다.  이것은 전처리기를 거친 소스 파일을 어셈 파일로 변환합니다.

그다음은 as 이며, assmeber 입니다.  이것은 에셈파일을 오브젝트 파일로 변환해주십니다.

마지막으로 ld 이며, linker 입니다.  이것은 오브젝트 파일들을 묶어서 실행 파일로 변환해 줍니다.

 

GCC는 옵션이 아주 많이 있지만, 자주 쓰이는 옵션은 제한 되어 있습니다.

 

--help : 간단한 옵션을 출력해줍니다.

--version : gcc의 버젼을 출력해 줍니다.

 

-o : 출력 파일명을 지정할 때 사용합니다.

-c : 링킹 과정을 진행 하지 않고 .o 파일인 오브젝트 파일까지만 생성 하게 됩니다.

-S : 어셈블러까지 진행 하지 않고, 컴파일러까지의 출력은 .S 어셈블러 파일을 생성하게 됩니다.

-O1 ~ -O3 : 최적화 수준을 지정합니다. 숫자가 클수록 높은 수준의 최적화를 하게 됩니다.

-g : 디버깅을 위한 정보를 컴파일 하면서 생성하게 됩니다.

-D : define 을 할수 있는 옵션입니다.

-l (엘) : 라이브러리 이름을 지정합니다.

 -L : 추가 라이브러리 디렉토리를 지정합니다.

-W : 모든 에러 메시지 출력

-w : 모든 에러 메시지를 출력 하지 않음

-I(아이) : 추가 헤더 파일이 있는 디렉토리를 지정합니다.


많이 사용되는 옵션을 축약했습니다.
외의 자세한 사항은 매뉴얼 명령어를 참고하시면 됩니다.
터미널을 여신 후 입력창에  'man gcc'를 입력합니다.

'Compile 강좌' 카테고리의 다른 글

라이브러리  (0) 2010.06.26
[컴파일 강좌] 2강 - C++ 분할 컴파일  (0) 2010.06.22
[컴파일 강좌] 1강 - C 분할 컴파일  (0) 2010.06.21
And