티스토리 뷰
반응형
※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.
예전에 이것과 관련된 내용을 IT 포럼에서 발표하기 위해 만들어 놓은 prezi가 있다.
함께 참고하면 좋을 듯.
http://prezi.com/obkhqdxaz3zx/programming-compile-loading-for-korean/
우선 개발자가 c언어로 코딩을 한다는 가정하에 이때 개발자는 *.c 혹은 *.cpp이 될 수도 있는 파일을 작성(Cording)하게 된다. 그리고 소스파일을 빌드(Build)하게 되는데 이때 고급언어인 C언어를 보다 낮은 언어인 어셈블리어로 변환하며 그 후에 다시 어셈블리어를 기계어로 바꿔주는 역할을 컴파일러(Compiler)가 수행한다. 대부분 흔히 고급언어에서 기계어로 변환하는 것을 컴파일(Compile) 이라고 칭한다. 이 과정에서 오브젝트 파일(*.obj) 파일을 생성하게 된다. 그 후 생성된 오브젝트 파일과 사용된 함수가 포함된 함수 라이브러리를 묶어주는 작업을 실행하는데 이 과정을 링킹(Linking)이라 하며 링커(Linker)가 담당한다. 링킹의 결과로써 실행 파일(흔히 *.exe 혹은 *.com)이 만들어지게 되는데 이 파일을 로더(Loader)가 메모리에 올려야(Load) 비로서 프로그램이 실행이 된다. 우리는 그냥 Ctrl+F7, Ctrl+F5를 눌렀지만 컴퓨터 내부에서는 이런 치열한 일들이 벌어지고 있었던 것이다.
반응형
'개인공부 > C and C++' 카테고리의 다른 글
struct member alignment(구조체 멤버 정렬)에 대해 (0) | 2014.01.16 |
---|---|
realloc, calloc 함수 및 예제 (1) | 2014.01.16 |
strlen, strcmp, strcat, strcpy, strrev, strtok, atoi, itoa 설명 및 함수로 구현 (0) | 2014.01.16 |
Call by value와 Call by reference에 대해 (5) | 2014.01.16 |
오버플로우(overflow)시 전혀 다른 값이 나오는 이유 (2) | 2014.01.16 |
변수와 메모리 관계에 대해 (0) | 2014.01.16 |
printf, scanf 를 제외한 표준입출력 함수들의 차이 (0) | 2014.01.16 |