본문 바로가기
CS/운영체제

[리눅스] Compile & Link with gcc

by merona99 2019. 4. 11.
반응형

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

댓글