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 별로 서로 다른 코드를 생성해낸다.
- 다양한 플랫폼과 언어들을 지원
'책벌레와 벌레 그 사이 어딘가 > 개념쌓기' 카테고리의 다른 글
[개념쌓기] 저항 & 커패시터 & 인덕터/ 표준저항? (0) | 2023.04.10 |
---|---|
[개념쌓기] IDE? Code Editor? (0) | 2023.04.10 |
[개념쌓기] YUV (0) | 2023.04.04 |
[개념쌓기] C & C++ & C# (0) | 2023.04.03 |
[개념쌓기] CORS 복습 (0) | 2023.01.20 |
댓글