본문 바로가기
컴퓨터 관련

컴파일(Compile), 링킹 각각의 소개

by _BlankSpace 2017. 4. 19.

먼저, 컴파일이란


개발자들이 특정한 프로그래밍언어(예 : C, C++, Object-C등)을 사용해서 컴퓨터가 이해할 수 있는 기계어 코드(이진코드)로 변환하는 작업을 말합니다.


밑에 그림을 참고하여 설명을 진행하도록 하겠습니다.




컴파일의 역할을 좀더 정확하게 말하면, 컴퓨터와 그 컴퓨터에 설치되어 있는 운영체제가 이해할 수 있는 기계어 코드로 변환하는 일을 합니다. 따라서 동일한 컴퓨터라 할지라도 윈도우가 설치되어 있는 컴퓨터와 리눅스가 설치되어 있는 컴퓨터는 같은 애플리케이션이라도 컴파일된 결과물은 다릅니다.

그 이유는 윈도우나 리눅스 등의 OS마다 차이가 있기 때문입니다.


사진에서 볼 수 있는 것처럼 소스 코드들은 컴파일러에 의해서 기계어 (바이너리) 코드로 변환되어 오브젝트 코드로 저장됩니다.


이후, 링커(Linker)에 의해서 링크를 하게 됩니다. 이때, 두 가지 라이브러리를 사용할 수 있습니다.


첫 번째는 Static Library로 정적 라이브러리입니다.. 이것은 실행 파일에 아예 포함되는 라이브러리라 할 수 있습니다.

따라서 실행파일에 포함되므로, 따로 파일을 가질 필요가 없다는 뜻입니다.


두 번째는 Import Library입니다. 다시 말하면 Dynamic Link Library 즉 동적 링크 라이브러리를 뜻합니다. 이것은 프로그램이 사용하는 특정 함수를 동적으로 가져가 쓰는 것을 말하는 데, 실행을 위한 코드를 실행파일이 가지고 있는 것이 아닌, 다른 파일에 실행하는 데 필요한 정보를 가지고 있다라는 정보만 알려주는 것을 말합니다.


이처럼, 링커는 라이브러리들을 사용자가 만든 애플리케이션과 연결하는 작업을 합니다.


이상 설명을 마치겠습니다.


제 글이 도움이 되셨거나 공감이 되셨다면, 공감 버튼을 한번 꾸욱 눌러주시면 감사하겠습니다.


저에겐 큰 도움이 됩니다!





댓글