티스토리 뷰

ChatGPT

개요

가볍게 읽으려, 흐릿한 기억들을 가다듬으려 구매한 책인데 “그림”이라는 제목의 선입견과는 달리 고수의 내공이 느껴지는 좋은 책이었다. 완전 초보분이 접근하기에는 되려 어려울까 싶지만, 이미 어느정도의 지식이 있는 상태에서 다시 한번 되짚거나 정리해보려는 분들께는 무척 좋은 책이다.

이 책을 읽으며 새롭게 배우거나, 어렴푸시 알았던 내용을 이 참에 하나씩 정리해보려 한다.

알라딘 링크: http://aladin.kr/p/C4HDQ

정적 라이브러리와 동적 라이브러리

정적 라이브러리와 동적 라이브러리 - page 41

정적(static) 라이브러리, 동적(dynamic) 라이브러리 모두 기능은 같다.

정적 라이브러리

정적 라이브러리는 .a 확장자를 가진다. archive라는 의미이다.

프로그램을 컴파일하면 오브젝트 파일이 생성되는데, 정적 라이브러리는 코드 조각들을 컴파일한 오브젝트 파일들이 여러 개 보관(archive)되어 있다. 정적 라이브러리를 사용하는 프로그램을 컴파일 한 다음 링크를 하면, 정적 라이브러리 내의 오브젝프 파일들 중에서 프로그램이 사용하는 객체 파일들만을 프로그램에 집어넣는다.

동적 라이브러리

동적 라이브러리는 공유(shared) 라이브러리라고도 한다.

동적 라이브러리는 .so 확장자를 가진다. shared object라는 의미이다.

동적 라이브러리를 사용하는 프로그램을 컴파일 한 다음 링크를 할 때에는 해당 라이브러리의 특정 함수를 호출한다는 정보만을 프로그램에 포함한다. 따라서, 프로그램은 라이브러리 파일을 함께 제공해야 한다.

동적 라이브러리의 장단점

장점

  • OS에 있는 공유 라이브러리를 사용하기에 실행파일의 크기가 상대적으로 작다
  • 여러 프로그램이 공유 라이브러리를 같이 사용하니 시스템에서 차지하는 크기를 줄일 수 있다.
  • 라이브러리에 문제가 있을 때에 라이브러리만 교체하면 이를 사용하는 모든 프로그램에서 문제가 해결되낟.

단점

  • 실수로라도 동적 라이브러리를 삭제하면 이를 사용하는 모든 프로그램을 실행할 수 없다. 복구도 쉽지 않다.

대세는 정적 라이브러리

Go언어는 기본적으로 라이브러리를 모두 정적 링크한다. 정적 라이브러리가 대세이다. 이유는 다음과 같다.

  • 대용량 메모리, 저장장치가 널리 사용되니 동적 라이브러리로 실행파일의 용량을 줄이는 장점이 줄어들었다.
  • 실행 파일 하나만 옮기면 되니 여러 환경에서 사용하기 편하다.
  • 실행시 동적 라이브러리 링크 시간을 줄여 시작시간이 빠르다.
  • 공유 라이브러리에서 DLL 지옥이라 부르는 하위호환성 문제가 없다.
    • 공유 라이브러리를 업데이트 하였는데 이전 버전에서 정상 동작하던 프로그램에서 에러가 나는 경우이다.
반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함