2012. 7. 13. 16:38

- gcc 컴파일러는 파일 확장자에 따라서 처리

파일명        종류        처리 방법

file.c        C 소스        gcc에서 전처리, 컴파일
file.C        C++ 소스        g++에서 전처리, 컴파일
file.cc        C++ 소스        g++에서 전처리, 컴파일
file.i        전처리된 C 소스        Gcc에서 컴파일
file.ii        전처리된 C++ 소스        g++에서 컴파일
file.s        어셈브리리 언어 소스        as에서 어셈블
file.S        어셈브리리 언어 소스        as에서 어셈블
file.o        오브젝트 모듈        ld로 전달
file.a        오브젝트 라이브러리        ld로 전달



- gcc 옵션

-o  실행 파일 명을 지정함
-c  컴파일만 수행
-D 매크로 정의
$ gcc –c –DFILE_NAME=“sungjuk.dat” –DDEBUG filter_driver.c
☞ c 언어 내부에서 다음과 같이 정의하는 것과 동일
#define DOC_FILE info
#define USE_POLL
-U 매크로 정의를 해제
#undef와 동일한 효과임
-I 헤더 파일 위치 지정
$ gcc –I../headers filter_driver.c

-l(소문자 L) 참조할 라이브러리 명지정
-L 참조할 라이브러리의 경로 지정
$ gcc –o plot –L/usr/local/lib main.o plot_line.o –lm
/usr/local/lib 디렉토리에 있는 libm.so 파일을 찾아 컴파일 수행
-S Assembly 코드 생성
-E 전처리 과정이 완료된 전체 파일 생성
-fPIC : PIC (Position independent code)
        공유 라이브러리가 메모리에 한번만 위치하도록


- gcc 옵션 : 경고 메시지 제어

W 모든 경고 메시지를 나오지 않도록 함
W 합법적이지만 다소 모호한 코딩에 대하여 부가적인 경고 메시지 출력
Wall 모호한 코딩에 대하여 자세한 경고 메시지
Wtraditional K&R C와 ANSI C 간에 서로 다른 결과를 가져올 가능성 있는 것에 대한 경고 출력
Werror 모든 경고를 에러로 만듬: 경고가 나오는 경우 오브젝트 파일을 만들지 않음


- gcc 옵션 : 언어 특성 제어

traditional 전통적인 C 언어 지원
ansi ANSI C 표준 지원
pedantic 모든 경고 메시지 출력하고 FSF 확장 사용할 수 없음

C 언어 3가지 종류
Traditional
   Kernighan과 Ritchie가 최초에 만든 C 언어
ANSI C
   미국 국가 표준으로 만들어진 C 언어
FSF C
   FSF에서 확장한 C언어


- gcc 옵션 : 전처리기

M 소스 파일을 읽어서 어떤 파일을 include하는지 알아내어 표준 출력으로 출력
C 주석을 지우지 않음


- gcc 옵션 : 라이브러리 지정 옵션

nostartfiles 링크할때 표준 시스템 구동 파일을 사용하지 않음
nostdlib 링크할때 표준 라이브러리와 구동 파일을 사용하지 않음
static 공유 라이브러리가 아닌 정적 라이브러리와 링크
shared 가능한 한 공유 라이브러리와 링크하고 공유 라이브러리가 없는 경우에만 정적 라이브러리와 링크(기본값)


- gcc 옵션 : 디버깅과 프로파일링

p prof에서 프로파일링 할 수 있는 프로그램 생성
pg gprof에서 프로파일링 할 수 있는 프로그램 생성
g 디버거 gdb에서 쓸 수 있는 확장된 심볼 테이블 을 생성


- gcc 옵션 : 최적화

O 옵션 01 과 동일
O0 최적화 하지 않음(기본값): 정확한 동작 및 컴파일 시간 적음
O1 코드 크기와 실행 시간을 줄여 줌
O2 더 많은 최적화를 수행함

ffast-math 부동 소수점 연산에 대하여 최적화
finline-functions 단순한 함수의 경우 inline 함수로 변경
fno-inline 모든 inline을 금지함
funroll-loops 고정된 반복 횟수를 갖는 반복문을 모두 전개함


- gcc 옵션 : 옵션 넘겨 주기

어셈블러에게 옵션 넘겨주기
-Wa,option-list
Option-list에는 여러 개의 옵션이 콤마(,)로 분리되어 들어감
링커에 옵션 넘겨주기
-Wl,option-list
Option-list에는 여러 개의 옵션이 콤마(,)로 분리되어 들어감

- ld 옵션들

-o name : 실행 파일 이름 지정
-lname : 표준 라이브러리 링크 (/lib /usr/lib)
-Ldir : 표준 라이브러리 디렉토리 추가
-s : 실행 파일에 심볼 테이블 제거 (ref. strip 명령)
-x : 출력 파일에 로컬 심볼 제거
-n : 텍스트 영역을 읽기 전용으로 만듬
-r : 추후에도 링크 할 수 있도록 오브젝트 파일 만듬
-e name: 실행 파일의 시작위치를 name 심볼로 사용
-M : 전역 심볼의 값이 어느 함수에 위치하는지 보여주는 로드맵 작성
-b format : 오브젝트 파일을 주어진 형식으로 읽어 들임
-oformat format: 주어진 형식의 오브젝트 파일을 생성
-soname : 실행시 찾아야할 라이브러리의 명을 명시

'EMBEDDED > SYSTEM Proc' 카테고리의 다른 글

[Make] Make 사용법  (0) 2012.07.13
[Library] Library 만들기  (0) 2012.07.13
[Normal] 조건부 컨파일  (0) 2012.07.13
[Normal] 비트필드 예제  (0) 2012.07.13
[Normal] 가변 인자를 사용하는 예제  (0) 2012.07.13
Posted by 몰라욧