Shared Library가 링크되는 과정 기술 이야기 2020. 3. 23. 23:16

컴파일과 링크 과정을 잘 정리해 둔 글은 많이 있다. 찾아보고 잊어버리기를 반복하는데, 날이 갈수록 더 잘 정리해 두니까 더 기억을 안하게 되는것 같다.ㅋㅋㅋ

내가 궁금한 것은 Shared Library는 Dynamic Linking 된다고 하는데, 왜 Compile time에 shared library file이 필요한가였다.

이유는 Compile time의 Static linking 과정에서 reference를 저장해 두었다가 Dynamic Linking 시점에 메모리에 올려진 Shared Library의 실제 주소가 reference와 연결되기 때문이며, 그래서 추가로 메모리가 필요치 않다. 그래서 Shared Library.

출처 : https://medium.com/@eightlimbed/static-vs-shared-libraries-a0c622e7c1d5

compile process
Static vs Shared Libraries

Stackoverflow 에도 질문이 있는데, shared library는 standard가 없나 보다. 아래 내용이 중요한데, 레퍼런스를 링킹하는 것 뿐만 아니라 추가로 확인이 필요한 식별자가 있는지 확인하기위해서도 쓰이는 듯.

at least on Unix-likes, it needs to access the shared library for potential required (declared and not defined) identifiers in order to make sure they are already defined or can be found in other linked libraries be them static or dynamic

why do we need the shared library during compile time