gcc
확장자
- C 프로그래밍에서 확장자별 파일의 역할
확장자 | 역할 |
---|---|
.a | 정적 라이브러리 |
.c | 원본 C 코드. 전처리 과정이 필요함 |
.h | C 코드 헤더 파일 |
.i | 중간 C 코드. 전처리 과정이 필요하지 않음 |
.o | 오브젝트 파일. 링킹 과정이 필요함 |
.s | 어셈블리 코드. 컴파일 과정에서 확인 가능 |
.so | 공유 라이브러리 |
.c ------> .i \------> .s \------> .o \------> .exe
옵션
-v
현재 gcc 컴파일러의 버전을 확인하기 위한 옵션
-o
gcc 컴파일러는 일반적으로 a.out이라는 실행 파일 생성
gcc 컴파일러 결과 파일의 이름 지정
- ex) gcc -o test test.c
-E
- 컴파일 과정 중 C 전처리 과정까지 수행
- #include, #define 등의 전처리문을 C 코드로 치한
- C 언어 소스 코드가 복잡한 선택적 컴파일 수행 시 코드 확인
- #ifndef, #define 등 복잡한 전처리문이 포함된 소스 코드
- 전처리 과정에 의해 컴파일 에러가 나는 경우 코드 확인
- 사용법
- ex) gcc -E ex1.c
-s
- 컴파일 과정 중 C 컴파일 과정까지 수행
- C 언어 코드로 이루어진 원시코드를 어셈블리 코드로 컴파일
- 어셈블리 코드를 확인할 수 있음
- 스택 프레임의 관리를 직접 확인할 수 있음
- 사용법
- ex1) gcc -S ex1.c
- ex1.s 파일을 통해 어셈블리 코드 확인 가능
- ex2) gcc -S -o ex ex1.c
- ex 로 어셈블리 코드 확인 가능
-c
컴파일 과정 중 어셈블리 과정까지 수행
링킹은 하지 않는다.
다수의 소스로 이루어진 프로그램에서 유용하게 사용
다수의 소스 파일의 오브젝트 파일을 생성
사용법
- ex1) gcc -c ex1.c
ex1.o 파일을 통해 오브젝트 코드 확인 가능
- ex2) gcc -c -o ex ex1.c
ex 로 오브젝트 코드 확인 가능
-I [Directory]
- 소스에 포함된 허데 파일을 검색하기 위한 디렉토리 추가
- 공백없이 디렉토리 경로와 I를 붙여서 써야 함
- 여러 디렉토리 지정 가능
- 다수의 파일로 이루어진 프로젝트 관리 시 주로 사용
-D [macro], -D [macro]=[define]
특정 매크로를 define 할 수 있는 옵션
C 코드의 #define 전처리문과 동일하게 작동
-D__KERNEL__ 은 #define KERNEL 과 동일
-DMAXLEN=255 는 #define MAXLEN 255와 동일
W [option]
경고 메세지와 관련된 옵션
[option]의 종류
- all : 컴파일 도중 발생하는 모든 경고 메세지를 출력
- error : 컴파일 도중 발생하는 모든 경고 메세지에 대해 오류로 간주
주로 -Wall 옵션이 많이 사용
-O [level]
컴파일러의 최적화와 관련된 옵션
최적화 레벨이 증가함에 따라
목적 코드의 크기 감소
프로그램 수행 속도 감소
컴파일 시간 증가
레벨이 높을수록 더 많은 최적화 작업 수행
-g
- 디버거 툴(gdb)을 사용하기 위한 옵션
- 디버깅 정보를 포함하여 어셈블리 코드 새엇ㅇ
- -O 옵션과 함께 사용 시 문제 발생 가능
- 최적화 과정에서 일부 디버깅 정보가 삭제될 수 있음
반응형
'멀티코어 프로그래밍 > Basic' 카테고리의 다른 글
스레드 스케줄링 (29) | 2022.03.31 |
---|---|
Make / Makefile (41) | 2022.03.30 |
프로파일링 (13) | 2022.03.28 |
GDB 명령어 (13) | 2022.03.27 |
GDB (6) | 2022.03.26 |
댓글