C++/C++

[C++] LNK

메카인 2023. 2. 13. 13:25

◆소스파일 - 오브젝트 파일

▷하나의 소스 파일은 컴파일이 될 때 하나의 오브젝트 파일을 생성한다.

▷윈도우는 .obj , 맥이나 리눅스의 경우 .o 파일이 된다.

▷이렇게 생성된 obj들로 하나의 실행파일(exe)을 만들어내게 된다.

 

◆헤더파일들을 소스파일에 모두 포함 시키고 오브젝트 파일을 만듭니다. 이후 이 오브젝트 파일을 모아 실행파일을 만듭니다.

 

◆exe 파일이 만들어 질 때 선언부는 반복해도 되지만 동작은 한번만 작성되어야 합니다.

 

◆매크로(전처리)의 컴파일

▷매크로는 소스파일 하나에 한번씩만 적용이 됩니다.

- ifdef, ifndef, define

 

◆시그니쳐 링킹

▷obj에서 실행파일을 만들 때 함수의 선언을 실제 몸체와 연결시키는 작업을 하는데 이것을 링킹이라고 합니다.

▷함수의 선언으로부터 몸통을 하나하나 찾아가는 과정이 됩니다.

 

◆obj 파일을 만들 때, 전방 선언되지 않은 함수(혹은 클래스)가 선언 전에 사용되면 LNK 에러가 발생합니다.

▷이 때, 해당되는 헤더파일과 소스파일이 제대로 전방선언 되었는지 확인합니다.