gcc와 cl을 사용한 리눅스 환경과 윈도우 환경의 중간파일 생성(컴파일) 단계 확인
컴파일러란
소스파일 → 전처리기(Preprocessor) .i→ compiler .s→ assembler .o(유닉스) or .obj(윈도-object의 약자)→ linker → 실행파일 .exe
컴파일 과정
소스( .c) → 전처리 (.i) → 컴파일(.s) → 어셈블러(.o or .obj) → 링크/링킹 → 실행파일 (.exe) ※ 밑줄 부분은 컴파일 과정에서 중간 파일이 생겼다가 지워진다.
GCC(GNU C COMPILER) → 리눅스 환경에서 컴파일을 해주는 프로그램
gcc -o 실행파일.exe first.c
gcc -o(실행파일을 만들어라) (이름지정).exe first.c(컴파일할 소스)
./(실행파일명)을 입력하면 출력된다.
중간 파일을 삭제하지 않고 보여주는 방법.
# gcc -v [--save-temps] -o test2 first.c
-v → 컴파일 과정을 화면에 출력한다.
--save-temps → 컴파일 과정에서 생성되는 중간 파일인 전처리 파일(*.i)과 어셈블리 파일(*.s)를 지우지 않고 현재 디렉토리에 저장한다. 컴파일 과정의 에러를 분석할 때 사용.
gcc -v [--save-temps] -o test2 first.c 명령으로 컴파일 한 후 출력해본 화면.
해당 디렉토리에 .i .s .o 의 파일과 실행파일이 생성되었다.
gcc 실행파일 생성 과정.
c 파일명을 abc.c 라고 가정하면 $gcc -o abc abc.c 를 실행해서 abc 라는 실행 파일을 만드는 과정은 아래와 같다.
(cc1(컴파일러) 과 collect2(링커) 가 존재하는 위치는 gcc 버전마다 조금씩 다르다.)
1. 전처리 (abc.i 파일 생성)
$cpp abc.c abc.i
2. 컴파일 (abc.s 어셈블러 파일 생성)
$/usr/lib/gcc/i486-linux-gnu/4.0.2/cc1 abc.i
3. 목적코드 생성( abc.o 오브젝트 파일 생성)
$as -V -Qy -o abc.o abc.s
4. 링킹 (ELF)
비주얼 C의 cl 컴파일 과정
cl 파일명 /FA() → ().asm파일 생성
cl 파일명 /P → 파일 전처리 결과 쓰기
.obj 파일은 그냥 생성됨.
※ 옵션 대문자
cl 실행파일 생성 과정.
c 파일명을 main.c 라고 가정하면
1. cl main.c /P를 실행해서
전처리 (main.c 파일 생성)
2. cl main.c /FA를 실행해서
컴파일 (main.asm 어셈블러 파일 생성)
3. cl main.c 를 실행해서
목적코드 생성(main.obj 오브젝트 파일 생성)
4. 링킹 (ELF)
'내장형 하드웨어 > C언어' 카테고리의 다른 글
c언어 실습 (char, 대입연산자, printf) (0) | 2011.03.23 |
---|---|
보수 정리 (0) | 2011.03.23 |
Visual studio 6.0 설치 , cl, copy con (0) | 2011.03.22 |
컴파일 과정 수업 및 c언어 컴파일 에러 확인 (0) | 2011.03.17 |
C 언어 첫 시간 (0) | 2011.03.16 |