1. Library ← 링커와 로더에서 가지고 오는, 라이브러리란 친구는 어떤 친구냐? 잉? 예를 들면, <stdio.h> 같은 애들임. 근데 이런 헤더 파일에는 사실은, 라이브러리 함수의 선언만 있음. 실제 정의는 라이브러리에 있음. 즉 헤더 파일에는 이런 애가 있다고 가정해~ 라고 살짝 맛보기식으로만 알려줌.

Untitled

  1. 소스파일을 컴파일을 하면, object file 들이 생성이 됨. 이때 예를 들어 Printf 가 필요했다면, object file 에서 libc.a 라는 오브젝트파일이 생성이 됨. 이거는 라이브러리라서 아직 선언만 되어 있고, 실제 정의는 없는 상태임. 그 다음에 링크를 해 주어야지, 그 extern 의 빈 공간에 실제 메모리가 매핑이 됨. link 를 해주고 나면 실행 파일임.

Untitled

  1. 이때 링킹에는 두 가지 종류의 링킹이 있음. 하나는 스태틱, 다른 하나는 동적. 스태틱은, 프로그램 실행 중에, 시간이 아무리 지나도 변하지 않는 스태틱한 라이브러리를 링킹하는 것을 뜻하고, 동적은 네트워크 에이피아이처럼 뭔가 시간에 따라서 없는데 생기기도 하는 그런 것들을 메모리의 별도의 공간에 저장해 놓은 shred library 를 실행 파일과 연결지어 주는 링킹을 뜻함.

Untitled

  1. 라이브러리에도 두 종류가 있음. 스태틱은, 프로그램 실행 파일마다 필요한 라이브러리가 다아아아 들어 잇음. 그래서 메모리 공간 비효율적으로 쓰지만 속도는 빠름. 반면 다이내믹 같은 경우에는, 하나의 라이브러리가 다른 메모리 공간에 저장되어 있고, 필요하면 실행 파일이 그걸 가져다 쓰는, 공유형태임. 그래서 속도는 느린데 메모리 공간 효율적으로 쓰는 거 가능 참고로 공유 라이브러리는 런타임 중에도 바인딩이 가능함. (특정 함수가 호출된 이후에 호출되는 경우처럼)

Untitled

  1. 스태틱과 공유 라이브러리의 장단점 → 질문! initial bookkepping 자세히,,

Untitled


이 이후 내용은 시험에 안내신다고 하셔서 그냥 필기해 놓은 것으로 갈음!