Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- BFS
- swift dashed line
- coordinator
- task cancel
- SWIFT
- RxSwift
- button configuration
- DP
- uikit toast
- 버튼 피드백
- 타임라인 포맷팅
- scene delegate
- custom navigation bar
- Tuist
- swift custom ui
- swift 점선
- swift bottomsheet
- reactorkit
- UIKit
- rxdatasources
- identifiable
- custom ui
- custombottomsheet
- swift 백준
- task cancellation
- traits
- domain data
- swift concurrency
- swift navigationcontroller
- claen architecture
Archives
- Today
- Total
김경록의 앱 개발 여정
[CS] 다이나믹 라이브러리 vs 스태틱 라이브러리 본문
개요
Tuist의 버전 마이그레이션을 진행하며 Static Library와 Dynamic Libreary에 대한 설정을 따로 해줘야 하는 경우를 맞닥뜨렸습니다.
물론 평소 외부 의존성을 사용할때도 마주쳤던 상황인데 부끄럽게도..
’ 음? 다이내믹은 뭐지? 선택하니까 잘 안되네, 급하니까 일단 스태틱 써야지.’ 하고 넘어갔던 기억이 있습니다…
부끄러움은 뒤로 하고 오늘은 다이내믹 라이브러리와 스태틱라이브러리가 어떻게 다른지 알아보겠습니다!
Static Library (정적 라이브러리)
정의
- 컴파일 시점에 프로그램에 포함되는 라이브러리 입니다.
- 소스코드가 아닌 컴파일된 바이너리 형태로 제공됩니다.
- 컴파일 작업을 거쳐 기계어로 변환하는 과정이 컴파일, 그 과정에서 결과물로 생긴 파일을 바이너리 파일이라고 얘기합니다.
- 단, 여기서 Xcode Build System의 컴파일러 과정에서 어셈블리어를 거치는 것과는 관련이 없고, 정적 라이브러리는 바로 기계어 변환된 상태로 시작 파일에 포함되어 있다고 합니다.
- mac에서의 파일형식은. a입니다
- 윈도우에선 .lib이라고 하네요!
링크 방식
- 정적 라이브러리는 프로그램의 실행 파일에 직접 포함이 됩니다.
- 라이브러리의 코드가 실행파일에 복사되며, 프로그램 실행 시 추가적인 라이브러리가 필요하지 않습니다.
- 링크, 링크 방식이란 무엇인가? (링크)
장점
- 배포가 간편하다.
- 추가적인 라이브러리에 의존성을 가지지 않아, 배포가 간편합니다.
- 실행 속도가 빠르다.
- 실행 파일에 필요한 모든 코드가 포함되어 있으므로 별도의 파일을 로드하는 과정이 필요하지 않아 실행 속도가 빠릅니다.
단점
- 파일 크기가 증가합니다
- 바이너리 파일이 직접 포함되니, 실행 파일 크기가 자연스레 증가합니다.
- 업데이트의 어려움
- 라이브러리 코드의 수정이 필요한 경우, 프로그램을 다시 컴파일해야 합니다.
Dynamic Library (동적 라이브러리)
정의
- 동적 라이브러리는 프로그램 실행 시 로드되는 라이브러리입니다.
- mac에서의 확장자는 .dylib 입니다
- 윈도우에선 .dll, 리눅스에선 .so 를 사용한다고 하네요!
링크 방식
- 컴파일 시점이 아닌, 실행 시점에 메모리에 로드되어 사용됩니다.
- 실행 파일에는 라이브러리에 대한 참조만 포함됩니다
장점
- 메모리의 절약
- 필요한 시점에서 로드되고, 불필요하면 해제되기 때문에 메모리 상 이점이 있습니다.
- 업데이트 용이
- 라이브러리의 변경 사항을 실행 파일을 재컴파일 하지 않고 적용할 수 있습니다.
단점
- 의존성의 관리
- 프로그램이 실행될 때 필요한 동적 라이브러리가 존재하지 않으면, 실행이 실패할 수 있습니다.
마치며..
- 개발은 결국 돌고 돌아 CS인가 봅니다…!
'TIL' 카테고리의 다른 글
[Swift] coordinator 패턴 사용시 memory leak 주의점 (0) | 2025.01.08 |
---|---|
[iOS] Xcode Build System (0) | 2025.01.08 |
[Swift] Tuist를 통한 ATS 처리 (0) | 2025.01.08 |
[Swift] iOS에서 HTTP 통신하기 (0) | 2025.01.08 |
Swfit Button image Inset + Button Configuration 사용시 폰트 적용법 (0) | 2025.01.08 |