c 컴파일 과정
C & Python 2015. 7. 11. 00:13c 컴파일 과정
- 소스코드 작성
편집기, 개발도구 등을 이용하여 소스 코드 작성
- pre process
컴파일러가 소스코드를 해석, "*.i" 파일 생성
$ gcc -E -o test.i test.c $ ls test.c test.i
파일명을 지정하지 않으면 화면에 코드 출력
$ gcc -E test.c //화면에 코드 출력 $ ls test.c
- 어셈블리 코드 생성
해석된 소스코드를 어셈블리 코드로 변환, "*.s" 파일 생성
$ gcc -S test.c $ ls test.c test.s
- 오브젝트 파일 생성
변환된 어셈블리 코드를 기계어로 변환, "*.o" 파일 생성
$ gcc -c test.c $ ls test.c test.o
- 링커
기계어로 변환된 오브젝트 파일을 OS 등이 제공하는 기능들(라이브러리)과 연결하여 실행이 가능하도록하는 과정
- 실행파일 생성
링커 단계를 거쳐 실행 가능한 파일 생성
$ gcc -o test test.c $ ls test test.c
파일명을 지정하지 않으면 a.out으로 생성
$ gcc test.c $ ls a.out test.c
소스에 math.h 헤더파일이 include되어있고 컴파일시 수학 라이브러리를 링크하도록 지정할 경우
라이브러리 링크 옵션(-lm)을 뒤에 쓸 것(앞에 쓰면 우분투 계열에서는 링크가 되지 않음, 이유는 모름)
수학 라이브러리 파일의 파일명을 보면 "libm..."으로 되어 있고 컴파일 옵션에서 "lib"를 생략한 "m"만 사용, "-l"이 옵션이고 "m"은 라이브러리 이름
$ gcc -o test test.c -lm $ ls test test.c $ ldd test //실행파일 test에 연결된 라이브러리 정보 출력
'C & Python' 카테고리의 다른 글
c 포인터변수 (0) | 2015.06.28 |
---|---|
python 2.7 한글 출력 (0) | 2015.06.28 |