컴파일과 링크 과정을 잘 정리해 둔 글은 많이 있다. 찾아보고 잊어버리기를 반복하는데, 날이 갈수록 더 잘 정리해 두니까 더 기억을 안하게 되는것 같다.ㅋㅋㅋ
내가 궁금한 것은 Shared Library는 Dynamic Linking 된다고 하는데, 왜 Compile time에 shared library file이 필요한가였다.
이유는 Compile time의 Static linking 과정에서 reference를 저장해 두었다가 Dynamic Linking 시점에 메모리에 올려진 Shared Library의 실제 주소가 reference와 연결되기 때문이며, 그래서 추가로 메모리가 필요치 않다. 그래서 Shared Library.
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
'기술 이야기' 카테고리의 다른 글
오픈소스로 개발하면 좋은점 - 1 (0) | 2020.05.19 |
---|---|
Android Jetpack은 API가 아니다 (0) | 2020.05.11 |
C# async, await와 TAP 놀랍지만... (0) | 2020.04.23 |
한국, 인터넷과 스마트폰 접근율 세계 1위 (0) | 2018.07.27 |
토큰 기반 인증 간단 정리 Token based Authentication (1) | 2018.05.02 |
AWS CloudFront와 S3로 Private Content 전달 방법 (0) | 2018.04.24 |
좋은 프로그래머란?(2) - 언제나 옳은 프로그래밍을 하자 (0) | 2018.04.20 |
댓글