반응형
Compile & Link with gcc
gcc : FSF의 C, C++ 컴파일러
<gcc 과정>
<소스 파일이 하나인 경우>
[소스파일 -> 실행파일]
gcc -o 실행파일이름 소스파일이름
- -o : 실행 파일 명을 지정
- 소스파일을 컴파일하여 실행파일을 생성
- 목적어 파일 생성x
[소스파일 -> 목적어파일 -> 실행파일]
1) 컴파일
gcc -c test1.c
- -c: 컴파일만 하고 링크x / 목적어 파일인 test1.o만 생성
- test1.c를 컴파일하여 test1.o를 생성
2) 링크
gcc -o 실행파일이름 목적어파일이름
ex) gcc -o test2 test1.o
- 이미 컴파일된 목적어 파일인 test1.o와 라이브러리 파일을 묶어 하나의 실행파일 test2 생성
<소스 파일이 여러 개인 경우>
[컴파일 -> 링크 -> 실행파일 (한번에 처리)]
gcc -o 실행파일이름 모든-소스파일이름-리스트
ex) gcc -o t1 t1.c add.c sub.c mul.c dvd.c
- t1.c ~ dvd.c 파일들을 컴파일하여 t1이라는 실행파일을 생성
- 목적어 파일 생성x
[컴파일 -> 링크 (나누어서 작업)]
*소스파일의 소스가 수정될 경우 수정된 파일면 컴파일하여 다시 링크 후 실행파일 새로 생성 (효과적)
1) 컴파일
gcc -c 소스파일이름-리스트
ex) gcc -c add.c sub.c mul.c dvd.c
- 목적어 파일 생성
2) 링크
gcc -o 실행파일이름 모든-목적어파일이름-리스트
ex) gcc -o t2 t1.o add.o sub.o mul.o dvd.o
- 컴파일된 목적어 파일들과 라이브러리 파일을 묶어 하나의 실행파일 t2 생성
*-c 옵션을 주었을 경우 -o 다음의 파일명은 실행파일 명이 아니라 생성될 목적어 파일 이름임
<컴파일러 옵션>
-v : 컴파일하는 과정에서 어떤 옵션이 사용되는지 알고자 할 때 사용
-D : 옵션을 사용한 매크로 정의
- ex) gcc -c -DFILE=\"I.C\" f.c
- #define FILE "i.c"와 동일한 결과
- 아무것도 설정 안했을 시 기본값은 1
-U : 매크로 정의를 해제 (==#undef)
-I : 헤더파일 위치 지정
- ex) gcc -I../hearders filter_driver.c
- 비표준 라이브러리를 위한 헤더파일의 디렉토리를 지정
- 디폴트 헤드 파일 위치는 /usr/include
-E : 전처리된 C소스 생성
- gcc -E file.c > file.i
-S : 어셈블리 언어 소스 생성
- gcc -S file.c
-c : 목적어 파일 생성
- gcc -c file.c
반응형
'CS > 운영체제' 카테고리의 다른 글
[리눅스] 명령어 (text) (0) | 2021.10.14 |
---|---|
[리눅스] 명령어 (basic) (0) | 2021.10.13 |
[리눅스] vi / vim Editor (0) | 2019.04.11 |
[리눅스] 파일명의 확장 (0) | 2019.04.09 |
[리눅스] UNIX 명령어 (0) | 2019.03.18 |
댓글