링크2 [C언어]링크(Link) 단계 (컴파일과 링크가 따로 되어있는 이유) 링크란? 대략적인 과정은 링커가 모든 오브젝트 코드들을 입력받아서 최종실행파일을 출력하는 과정이다. 입력 : 모든 오브젝트 코드들 링커는 오브젝트 코드에 있는 구멍들을 메꿔줘야 하므로 모든 오브젝트 코드들을 입력받는다 처리 오브젝트 파일을 다 모아서 하나의 이진파일로 만들면서 함수들의 위치도 기억하고 있는다 그러다 함수 호출 코드를 만나면 실행위치(구멍)에 함수 주소로 점프하는 코드를 넣어준다 출력 : 최종실행파일(.exe, .out) 파일에서 선언만 되어있고 구현(정의)이 되지 않아서 여전히 구멍으로 남으면 어떡하나요? 이럴 때는 링커가 링커오류를 출력한다. 이는 경고(Warning)가 아니라 애러(Error)이기 때문에 실행파일이 만들어지지 않는다. 왜 컴파일단계와 링크 단계가 분리되어 있는 이유 ... 2023. 2. 16. [C언어]C프로그램 빌드 과정(컴파일,링크,빌드의 차이) 빌드(build)란? 빌드의 뜻은 소스코드를 기계가 이해할 수 있는 기계어로 변환해 주는 과정으로 명령어를 모두 모아서 실행 가능한 실행파일로 만드는 과정으로 세부적으로 나누면 4가지로 나뉘어진다. 전처리(Preprocessing) 컴파일(Compilation) 어셈블(Assembling) 링크(Linking) 빌드안에 컴파일이랑 링크가 속해있는 것으로 보면 된다. 사람마다 전처리,컴파일,어셈블전체를 컴파일로 불러서 빌드 단계를 두 단계로 보는 경우도 있다. 컴파일 링크 컴파일(Compile)이란? 컴파일러가 전처리기가 처리해준 소스 코드를 이용해서 어셈블리어로 바꿔주는 과정을 말한다. 어셈블리어는 기계어와 1:1로 대응이 되는 언어로 하드웨어에 가까운 언어이다. 어셈블리어를 기계어라고 부르기에는 조금 .. 2023. 2. 15. 이전 1 다음