본문 바로가기
책벌레와 벌레 그 사이 어딘가/개념쌓기

[개념쌓기]GCC란?

by veganwithbacon 2023. 4. 8.
반응형

  GCC(GNU Compiler Collection)

: GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러

 

GNU(GNU's Not Unix) 

: GNU는 유닉스가 아니다라는 의미
각종 자유 소프트웨어들이 돌아가고 번영할 수 있는 기반 생태계를 구축하기 위해 시작한 프로젝트

 

  컴파일러?

컴파일(Compile)은 어떤 언어의 코드를 다른 언어로 바꿔주는 과정을 말한다.

예로, 사람이 인식하고 이해가능한 C언어 코드를 컴퓨터가 이해할 수 있게 기계어로 바꿔주는 것이다.

 

컴파일러(Complier)는 어떤 프로그래밍 언어의 코드로 쓰여진 소스 파일을 다른 언어로 바꿔주는 번역기다.

 

  소스 코드가  실행 파일이 되는 과정

-전처리 단계
-컴파일 단계
-어셈블 단계
-링크 단계

 

  1. 전처리 단계

전치리기 지시자?

#으로 시작하고 세미콜론 없이 개행문자로 종료되는 라인을 의미

#include : 지정된 특정 파일의 내용을 해당 지시자가 있는 위치에 삽입

#define : 매크로 함수 및 상수 정의에 사용한다. 코드 내의 해당 상수를 프로그래머가 정의한 문자열로 대체

 

  2. 컴파일 단계

전처리된 파일인 hello.i로부터 어셈블리어로 된 파일 hello.s파일을 생성한다.

 

어셈블리어란?

기계어보다 한 단계 위에 있는 언어이며, 기계어와 함께 두 가지 뿐인 저급 언어에 속한다.

기계어는 컴퓨터 관점에 바로 읽을 수 있으나, 인간이 사용하기 불편한 언어이기 때문에 이를 보완하기 위해 등장한 것이 어셈블리어이다.

 

  3. 어셈블 단계

어셈블리어 파일 hello.s를 기계어로 된 오브젝트 파일 hello.o 파일로 변환한다. 

컴퓨터가 읽을 수 있는 0과 1로 이뤄진 2진수 코드로 변환하는 것이다.

 

  4. 링크 단계

링크 단계는 작성한 프로그램이 사용하는 다른 프로그램이나 라이브러리를 가져와서 연결하는 과정이다. 그 결과로 실행 가능한 파일을 생성한다.(hello.o -> hello)

#링크 단계[*.c -> (*.i) -> (*.s) -> excutable]
gcc -o main main.c func.c

 


✔GCC 컴파일 옵션

자료 출처 : https://80000coding.oopy.io/d5fa7c87-192f-4c68-95eb-aa4af5b9dbf5

 

------------------------------------------------------------------------------------------------------------------------------------------------------

✅  그렇다면 GCC의 특징은 무엇일까?

- 무료

- GCC 만으로 여러 가지의 프로그래밍 언어들을 컴파일 가능

- 서로 다른 운영체제들과 호환이 가능하며, 다른 CPU 별로 서로 다른 코드를 생성해낸다.

- 다양한 플랫폼과 언어들을 지원

 

 

 

반응형

댓글