컴파일이란

2013. 10. 23. 02:25 from Language/C언어
※ 컴파일이란?
- 간단히 정의 하자면 인간이 보기 편하게 만든 소스코드를 컴퓨터가 이해 할 수 있는 기계어 구조로 변환하는 일련의 과정을 말합니다.
 이 과정은 아래 그림과 같은 과정을 거칩니다.


우선 소스 코드들 (.cpp, .c) 이 컴파일러에 의해서 컴파일 되면 바이너리 (기계어) 코드로 변경되어 .obj (오브젝트 코드)들로 저장이 됩니다.

그 후에 링커 (Linker)에 의해서 링크를 하게 되는데 이때 두가지 라이브러리를 사용할 수 있습니다. Static Library는 정적 라이브러리로써 실행 파일 (.exe)에 아예 포함되어 버리는 라이브러리입니다.

결국 .exe 자체가 소유하게 되므로 실행시에는 이 파일이 필요가 없습니다.

반대로 Import Library는 프로그램이 사용하는 특정 함수를 동적으로 가져다 쓰는 것으로써 실행을 위한 코드를 .exe 파일이 소유하는 것이 아니라 '어느 파일(DLL 파일들)에 니가 필요한 함수 뭐뭐가 있다더라' 라고 알려만 줍니다.

고로, .exe 파일을 실행할 때, 만약 내가 특정 함수를 DLL에서 불러와 사용했다면 반드시 해당 DLL과 .exe 파일을 연결 시켜 주어야 합니다. 그렇지 않으면 .exe 는 실행 할 수가 없다는 에러 메세지를 띄웁니다.

.NET Framework는 이와는 조금 다르게 동작하기는 하지만 기본적으로 프로그램이 동작하는 원리는 비슷합니다.


'Language > C언어' 카테고리의 다른 글

컴파일과 링크의 차이  (0) 2013.10.23
라이브러리와 헤더파일의 차이  (0) 2013.10.23
잘못된 포인터의 사용 1  (0) 2013.10.23
포인터, 배열, 포인터 배열 비교  (0) 2013.10.23
코드 최적화  (0) 2013.10.23
Posted by 나무길 :