먼저, 컴파일이란
개발자들이 특정한 프로그래밍언어(예 : C, C++, Object-C등)을 사용해서 컴퓨터가 이해할 수 있는 기계어 코드(이진코드)로 변환하는 작업을 말합니다.
밑에 그림을 참고하여 설명을 진행하도록 하겠습니다.
컴파일의 역할을 좀더 정확하게 말하면, 컴퓨터와 그 컴퓨터에 설치되어 있는 운영체제가 이해할 수 있는 기계어 코드로 변환하는 일을 합니다. 따라서 동일한 컴퓨터라 할지라도 윈도우가 설치되어 있는 컴퓨터와 리눅스가 설치되어 있는 컴퓨터는 같은 애플리케이션이라도 컴파일된 결과물은 다릅니다.
그 이유는 윈도우나 리눅스 등의 OS마다 차이가 있기 때문입니다.
사진에서 볼 수 있는 것처럼 소스 코드들은 컴파일러에 의해서 기계어 (바이너리) 코드로 변환되어 오브젝트 코드로 저장됩니다.
이후, 링커(Linker)에 의해서 링크를 하게 됩니다. 이때, 두 가지 라이브러리를 사용할 수 있습니다.
첫 번째는 Static Library로 정적 라이브러리입니다.. 이것은 실행 파일에 아예 포함되는 라이브러리라 할 수 있습니다.
따라서 실행파일에 포함되므로, 따로 파일을 가질 필요가 없다는 뜻입니다.
두 번째는 Import Library입니다. 다시 말하면 Dynamic Link Library 즉 동적 링크 라이브러리를 뜻합니다. 이것은 프로그램이 사용하는 특정 함수를 동적으로 가져가 쓰는 것을 말하는 데, 실행을 위한 코드를 실행파일이 가지고 있는 것이 아닌, 다른 파일에 실행하는 데 필요한 정보를 가지고 있다라는 정보만 알려주는 것을 말합니다.
이처럼, 링커는 라이브러리들을 사용자가 만든 애플리케이션과 연결하는 작업을 합니다.
이상 설명을 마치겠습니다.
제 글이 도움이 되셨거나 공감이 되셨다면, 공감 버튼을 한번 꾸욱 눌러주시면 감사하겠습니다.
저에겐 큰 도움이 됩니다!
'컴퓨터 관련' 카테고리의 다른 글
[GIT] 초기 Git 소스 가져오는 방법 (0) | 2017.04.22 |
---|---|
온라인 컴파일러 (coliru) 소개. (0) | 2017.04.20 |
범용 레지스터 각각의 이름과 용도 (0) | 2017.04.19 |
다국어 문자셋(CharSet) (0) | 2017.04.18 |
아스키코드(ASCII) 표 (0) | 2017.04.18 |
댓글