nowornever
GCC 컴파일 과정 본문
1. 소스코드는 기본적으로 vi나 emacs 등과 같은 에디터(혹은 gedit)를 사용해 작성한다
2. 이렇게 만들어진 소스코드를 gcc를 이용해 컴파일한다.
3. gcc는 정확히는 '컴파일 드라이버'이며 소스 코드의 빌드 과정을 순차적으로 실행하는 명령이다.
4. 실행 파일은 다음과 같은 순서를 통해 만들어진다.
1) 프리프로세서에 의한 파일 포함과 매크로 처리
2) 어셈블리 코드로 컴파일하고 어셈블 과정을 거쳐 오브젝트 파일로 변환
3) 오브젝트 파일 결합과 라이브러리 링크를 통한 실행 파일 생성
5. gcc list.c -o list
-o 옵션은 소스코드에서 바로 실행 파일을 만든다.
-o 옵션을 지정하지 않으면 실행 파일의 명칭은 a.out이 된다.
6. $ gcc list.c -c
-c 옵션은 소스코드에서 오브젝트 파일을 만든다.
(컴파일만 하고 링킹은 하지 않는다.)
7. $ gcc list.c -S
-S 옵션을 사용하면 어셈블리 파일을 생성한다.
8. 오브젝트 파일에서 실행 파일을 만드는 것도 가능하다
$ gcc list.o -o list
9. 여러개의 분할된 소스코드의 경우에는 다음과 같이 빌드가 가능하다.
$ gcc list1.c list2.c -o list
10. 여러개의 분할된 소스코드를 오브젝트 파일로 컴파일 한 뒤 실행 파일로 링킹이 가능하다.
$ gcc list1.c list2.c -c // list1.o와 list2.o 각각 생성
$ gcc list1.o list2.o -o list // 만들어진 오브젝트 파일들을 링킹해서 실행파일 생성
11. 옵션 -E를 사용하면 프리프로세서에 의한 파일 포함과 매크로 처리단계를 확인할 수 있다.
$ gcc -E list.c
12. 옵션 -static을 사용하면 정적 링크 방식으로 소스코드를 빌드할 수 있다
참고로 gcc는 기본적으로 정적 링크가 아닌 동적 링크를 이용한다.
$ gcc list0511.c -o list0511 -static
13. 옵션 -I(대문자 아이)을 사용하면 포함 파일의 탐색 경로를 지정할 수 있다.
14. 옵션 -l(소문자 엘)을 사용하면 라이브러리 이름을 지정할 수 있다.
출처: http://http://huammmm1.tistory.com/trackback/82huammmm1.tistory.com/trackback/82
'Study' 카테고리의 다른 글
my Baby (0) | 2013.04.12 |
---|---|
Shift Register (쉬프트 레지스터) 역할 (0) | 2013.04.10 |
라플라스 변환 (Laplace Transformation) (0) | 2012.07.11 |
2012년 현재 하고 있는 일 설명 (0) | 2012.07.03 |
Introduction to Simulink (0) | 2012.06.21 |