Linking 2

[ OS ] 13. 메모리 관리 전략 - Static Linking vs Dynamic Linking

Static Linking vs Dynamic Linking 먼저 Linking(링킹)에 대해 이해를 해보자 링킹은, 프로그램을 빌드하는 과정 (즉 컴파일 과정에서 거치는 단계) 이뤄지는 과정이다. 이 전체를 크게 컴파일 과정이라고 한다. 작은 의미의 컴파일은 Compile 과정이고, 큰 의미의 컴파일은 Compiling + Linking 전 구간을 의미한다. 프로그래머들이 이해하기 쉬운 C/C++로 코드를 짜면 Source.cpp처러 소스파일이 생성된다. 그리고 이를 Build(빌드) 하게 되면 Compiling + Linking 과정을 거친 후 .exe파일을 내보내게 된다. 작은 의미의 컴파일인 Compiling만을 거치게 되면 Object File(목적 파일)인 Source.obj가 생성되게 되고 ..

[ Embedded ] 21. 임베디드 개발환경(Toolchain, Compile...)

5. 임베디드 개발환경 Tool - Chain ? 리눅스에는 “gcc” 라는 C 컴파일러가 있다. 리눅스에서 gcc 컴파일러로 컴파일할 때 별도의 출력 파일 이름을 지정하지 않으면 a.out이라는 이름으로 생성된다. 생성된 파일은 “실행 가능한 ELF 파일” 타입으로 되어 있다. 즉, UNIX나 Linux에서 gcc로 컴파일하면 무조건 ELF 파일이 생성된다. 컴파일 과정(Compile) 텍스트로 되어 있는 소스 코드 파일을 이진 바이너리(Binary) 코드로 변환하는 과정. 가장 먼저 실제 컴파일을 진행하기 전에 소스 코드 상에 "#"(전처리기, Preprocessor)으로 처리되어 있는 부분들을 먼저 처리한다. 이후에 처리가 끝나면 C 문법 검사를 하게 된다. 오류가 없다면 이진 바이너리 코드로 변환..