링크 선택 기준

정적 링크와 동적 링크를 배포 관점으로 비교하기

링크 방식은 실행 파일의 크기뿐 아니라 라이브러리 배포, 보안 업데이트, 실행 환경 진단 방법까지 바꿉니다.

포함 위치 실행 파일 내부 또는 실행 시 로드
관리 대상 단일 파일 또는 라이브러리 파일 세트
진단 지점 빌드 결과와 실행 환경을 함께 확인

정적 링크

self-contained
라이브러리 코드 .lib, .a에서 가져옴
실행 파일 필요 코드가 내부에 포함

배포가 단순하지만 파일이 커지고, 라이브러리 수정 후에는 다시 빌드해야 합니다.

동적 링크

shared runtime
실행 파일 참조 정보만 보관
공유 라이브러리 .dll, .so, .dylib 로드

파일은 작고 업데이트가 쉽지만, 실행 환경에 맞는 라이브러리가 있어야 합니다.

배포

단일 파일 필요 여부

설치 과정이 제한적이면 정적 링크가 단순합니다.

업데이트

라이브러리 교체 빈도

공유 라이브러리 교체가 필요하면 동적 링크가 유리합니다.

호환성

대상 환경 다양성

동적 링크는 버전과 검색 경로를 함께 검증합니다.

진단

실행 전 확인 항목

빌드 산출물과 의존 라이브러리 존재 여부를 나눠 봅니다.

판단 기준

선택은 성능 하나로 정하지 않습니다

초보 단계에서는 “실행 파일이 만들어졌는가”에서 멈추기 쉽지만, 배포 방식까지 생각하면 링크 오류와 실행 오류를 더 빨리 구분할 수 있습니다.

오프라인 배포 정적 링크 후보, 단 파일 크기와 라이선스 확인
공유 런타임 동적 링크 후보, DLL 또는 so 검색 경로 확인
오류 메시지 unresolved는 링크 단계, missing library는 실행 환경부터 점검