컴퓨터 과학
c언어-컴파일링
용용it
2023. 1. 20. 00:34
오버플로우
오버플로우란 컴퓨터 하드웨어의 한계로 인해 발생하는 문제 중 하나로, 변수가 담을 수 있는 최대 허용 범위를 벗어난 값을 저장해 예상치 못한 결과가 나오는 현상을 뜻한다.
make나 clang을 사용해서 프로그램을 실행할 때 네 단계를 거친다.
1. 전처리
2. 컴파일링
3. 어셈블링
4. 링킹
전처리(Precompile)
#으로 시작되는 c 소스 코드는 전처리기에게 실질적인 컴파일이 이루어지기 전에 무언가를 실행하라고 알려준다.
전처리기는 입력 데이터를 처리하여 다른 프로그램에 대한 입력으로서 사용되는 출력물을 만들어내는 프로그램이다.
컴파일(Compile)
전처리기가 전처리한 소스 코드를 생성하고 나면 컴파일러라고 불리는 프로그램은
c코드를 어셈블리어 라는 저수준 프로그래밍 언어로 컴파일 한다.
컴파일러는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다
즉, 컴파일은 어떤 언어의 코드를 다른 언어로 바꿔주는 과정. 번역기인 셈이다.
어셈블(Assemble)
소스 코드가 어셈블리 코드로 변환되면, 어셈블리 코드를 오브젝트 코드로 변환시키는 것이다.
컴퓨터가 알 수 있는 명령어 형태인 0과 1들로 바꿔주는 작업을 어셈블러라는 프로그램이 한다.
링크(Link)
프로그램이 여러 개의 파일로 이루어져 있어 하나의 오브젝트 파일로 합쳐져야 한다면
링크라는 컴파일의 마지막 단계가필요하다.
링커는 여러 개의 다른 오브젝트 코드 파일을 실행 가능한 하나의 오브젝트 코드 파일로 합쳐준다.