소스코드 빌드
빌드는 프로그래머가 작성한 소스코드를 실행할 수 있는 상태로 변환하는 과정을 말하며, 언어에 따라 차이가 있습니다.
리눅스(unix) 환경
리눅스 환경에서 컴파일러는 GCC를 사용합니다. C언어를 사용하여 프로그램 한 main.c와 sub.c 소스코드를 전처리기를 통하여 선행 처리 과정을 거치고 cc1과 as라는 어셈불러를 통하여 목적파일인 오브젝트(Object) 파일을 생성합니다.
링크과정은 목적파일을 하나로 묶는 과정으로 하나의 목적 파일이나 여러개의 목적파일이 하나의 실행 파일로 링크될 수 있고, 링크시에는 정적(Static) 라이브러리(Library)나 공유(Share) 라이브러리가 필요하며, 링크과정이 끝나면 실행파일이 생성됩니다.
일반적인 환경
C / C++
C나 C++ 프로그램으로 작성된 일반적인 환경에서의 컴파일 언어는 기계어로 바로 변환되어 실행되기 때문에속도가 빠르고 보안에 유리합니다. 하지만 소스 변경시마다 컴파일 과정을 통해서 빌드 작업을 수행하기 때문에
빌드 과정이 오래 걸립니다
빌드는 전처리기(Preprocessor) 파싱(Parsing) 번역(Translation) 어셈블리(Assembly) 링킹(Linking) 통해서 진행됩니다.
크게 나누면 4단계로 나누어 집니다. 전처리 > 컴파일 > 어셈블 > 링크
- 전처리 : 사용자가 작성한 코드가 잘 번역될 수 있도록 단순 치환해주는 작업입니다. 예를 들면 #include, #define 등이 있습니다 이 구문들을 전처리 구문이라고 하며, 컴파일
- 컴파일 : 고수준 언어를 어셈블리어로 1차 번역하는 과정으로, 컴파일러(Compiler)를 통해 번역됩니다.
- 어셈블 : 컴파일 과정에서 번역한 저수준 언어인 어셈블리어를 기계어로 최종 번역하는 단계입니다. 어셈블러(Assembler)를 통해 번역되며 컴퓨터(CPU)가 해석할 수 있는 언어로 번역된 파일인 Object File을 얻게 됩니다.
- 링크 : 어셈블 단계에서 만들어진 Object File은 컴퓨터가 해석할 수 있지만 실행할 수 있는 파일은 아닙니다. 링크 과정에서 이 Object File들을 필요한 라이브러리와 연결시켜주고 하나로 묶어 실행 가능한 파일을 만들어 줍니다.
Byte Code 언어 ( Java, C# )
Byte Code 언어는 컴파일의 결과물이 실행파일이 아닌 'class'라는 바이트 코드 파일로 생성되고 가상 실행환경인 JRE(Java Runtime Environment), CLI(Common Language Infrastructure)에서 한 줄씩 실행하며 빌드됩니다.
JRE, CLI 환경에서 실행될 때 기계어로 변환되며, 컴파일 언어에 비해 빌드 과정이 빠릅니다
인터프리터 언어 ( Javascript, Python, Ruby )
인터프리터 언어는 컴파일 언어와 다르게 한 줄씩 번역되어 실행됩니다.
컴파일 하는 과정에서 메모리가 훨씬 적게 소모되고 빠른 시간에 컴파일을 진행할 수 있습니다.
'개발' 카테고리의 다른 글
[정보처리산업기사 필가] 운영체제 (1) | 2023.09.04 |
---|---|
[정보처리산업기사 필기] 애플리케이션 (1) | 2023.08.30 |
[자기개발] Emotion (1) | 2023.05.29 |
[개발] 담배 피는 사람 분류 (합성곱 신경망) (2) | 2023.05.21 |
[개발] OpenCV 감마 조절 (0) | 2023.04.25 |