1) what is gcc
http://en.wikipedia.org/wiki/GNU_Compiler_Collection 를 보면 잘 나와 있다.
MinGW or Mingw32 ( Minimal SYStem ) - Win32 platform ( Dev C++ )
MSYS ( Minimal SYStem ) - cygwin
2) gcc 컴파일 과정
gcc 의 컴파일 과정을 살펴보기 위하여
gcc -save-temps main.c -o main.exe 라고 명령을 하였다.
결과물로서
main.c main.e main.exe main.i main.o main.s 의 파일이 보였다.
gcc 또는 g++ 이 아래의 실행 파일들을 순서 대로 호출하게 되어 있다.
순서 )
가) The C Preprocessor <전처리기> - cpp,cpp0
( c++ 인 경우 결과 파일명은 main.ii )
( cc1 -E 로 호출 가능 )
# 으로 시작하는 구문을 처리
main.i 에 전처리된 결과가 있다.
main.c --> main.i
나) C 컴파일러 - cc1
( c++ 인 경우 cc1plus )
main.i ---> main.s ( 결과물로 어셈블리 코드가 나온다 )
다) 어셈블러 - as ( 어셈블리어를 기계어 코드로 생성한다 )
main.s ---> main.o
라) 링커 - ld, collect2
main.o + 라이브러리 --> a.out ( main.exe)
3) 옵션
http://gogamza.cafe24.com/321 < 고감자님 > 불로그에 포스팅 된 내용을
기반으로 좀더 내용에 살을 붙여 보도록 하겠다.
가) gcc 전역 옵션
-E : 전처리 과정 화면에 출력
gcc -E fib_main.c ; 화면에 출력됨
gcc -E fib_main.c -o fib_main.i ; 결과 파일에 출력
-S : 어셈블리 파일 생성
gcc -E fib_main.c ; 결과 파일이 fib_main.s 에 저장 ( -o 옵션으로 결과 파일명 변경 가능 )
-c : 오브젝트 파일 생성
gcc -c fib_main.c ; 결과 파일이 fib_main.o 에 저장 ( -o 옵션으로 결과 파일명 변경 가능)
-v : 컴파일 과정 화면에 출력
gcc -v fib_main.c
--save-temps : 컴파일시 생성되는 중간 파일 저장
gcc -save-temps main.c -o main.exe
===> main.c main.e main.exe main.i main.o main.s
-da :컴파일 과정에서 생성되는 중간 코드 생성
--save-temps 에서 생기는 파일의 각 과정의 결과물..
여기에서 생기는 파일은 중간과정을 처리하기 위해 생김.
예를 들면 심볼테이블
gcc -da main.c -o main.exe :: 아주 다양한 파일들이 보인다.
그러나 --save-temps 에서 생성된 파일은 보이지 않는다.
'Academy I > Tech Academy' 카테고리의 다른 글
Unix - 웹 로그 분석, 날짜및 시간대 범위 분석(awk, uniq, egrep) (0) | 2015.10.02 |
---|---|
Jar Make (0) | 2015.09.16 |
Java Makefile (0) | 2015.09.15 |
한국 각 증권사별 API 현황 (0) | 2015.06.16 |
sed(stream editor) (0) | 2015.02.04 |
[REGEX]Regular expression (0) | 2015.02.02 |
Awk (0) | 2015.02.02 |
Regular expression (0) | 2015.02.02 |