2012. 4. 23. 22:42 devel

gcc 개인적인 정리

출처 GCC 완전 정복(The Definitive Guide to GCC) 발췌

개인 정리용 문건임

 

 

0. source code decompress

tar -zxf gcc####.tar.gz -C dir 이런식으로 옵션을 줘도 되었던듯

 

 

1. configure script option before compile

./configure \

--prefix=/usr/local/ \    빌드 후 설치할 경로

--srcdir=~~~ \

.

.

.

 

 

make bootstrap으로 gcc를 컴파일 하게 되면 다음과 같은 과정을 밟는다

a. 컴파일러를 빌드하는데 필요한 bison?, textinfo?, gcov?, gpref같은 툴을 build한다

b. configure를 실행하기 전에 compiler를 위한 바이너리 유틸리티

(bfd, binutils, gas, gprof, ld, opcodes)가 gcc 빌드 디렉토리로 이동 되었거나 링크 되어있으면 바이너리 유틸리티를 빌드

c. 컴파일러 스스로 native compiler를 가지고 새로은 compiler를 만든다

1단계 compiler를 우선 맹글고 그거로 2단계를 만든다

2단계로 3단계 만듬 ㅇㅇ

★. 만약 2단계와 3단계 컴파일러가 다르면 오류 발생한거임 3단계 설치하면 안됨

e. 3단계 컴파일러로 필요한 runtime library만듬

 

 

2. GCC의 target

compare 2단계와 3단계를 비교

cleanstrap clean->make bootstrap

 

그 이후로 길고 긴 내용이 있는데  못 버티겠다

 

 

 

gcc의 출력 조절

.c 전처리를 해야 하는 c 소스코드

.C 전처리를 해야 하는 c++ 소스코드

.cc

.cpp

.cxx

.i 전처리를 하지 않을 c 소스코드

.ii c++

.m objective c source code

.h c header(컴파일, 링크하지 않는다)

.s assembly code

.S 전처리를 해야 하는 assembly code

 

-c 링킹 단계 앞에서 컴파일 과정을 멈춘다

-E 전처리 과정 후 컴파일을 끝낸다

-o file file에 출력한다

-S 어셈블러 코드를 작성한 후에 컴파일 과정을 멈춘다

-x lang 이 옵션 이후의 입력 화일에서 쓰는 프로그래밍 언어를 lang으로 설정한다

-x none 위에꺼 캔슬

 

예제

gcc -E sample.c -o sample.i

gcc -S test1.c test2.c

-> 확인해 보면 test1.s, test2,s가 생성되어 있음

-c 옵션도 뭐 동일함

.o 파일이 만들어져 있겠지

-x 옵션의 예제는 좀 길다

 

IamNotTextFile.txt <- 사실은 c 코드라고 해보자

gcc -x c IamNotTextFile.txt

 

다른 예제

단계별로 직접 컴파일하기

전처리 하기

gcc -E t1.c -o t1.ii

gcc -E t2.c -o t2.ii

 

어셈블리 번역

gcc -S -x cpp-output t1.pre -o t1.s

gcc -S -x cpp-output t2.pre -o t2.s

 

object file

gcc -c -x assmebler t1.s t2.s

 

linking object file

gcc t1.o t2.o -o dst

 

-S옵션을 통해 code 최적화가 가능하다

'devel' 카테고리의 다른 글

4bytes data type pointer에서 1byte 씩 접근하기  (0) 2012.06.02
Sprintf part1  (0) 2008.11.29
Posted by 쵸코케키

블로그 이미지
chocokeki
쵸코케키

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함