dll, lib

2022. 7. 1. 11:09C#/C#에 대한 다양한 공부

라이브러리 : 함수, 데이터 타입 여러가지 프로그래밍 요소들의 집합을 말한다.

라이브러리를 사용해야하는가?

  1. 자주 사용하는 함수들을 쉽게 사용할 수있다.
  2. 모든 코드를 직접 만들 수는 없다.

dll(Dynamic Link Library) 

  • 특징 :

그로 인해 프로그램 로딩 시간이 단축된다.

  • dll파일만 수정해서 dll파일만 배포하면 된다.
  • 메인 실행 파일의 사이즈가 작아진다.

 

lib(Static Link Library) :

  • 특징 :

, 라이브러리 파일이 따로 없더라도 실행 파일 자체가 모든 라이브러리를 가지고 다닌다.

  • 만약 어떤 수정사항이 생기면 소스를 수정해서 다시 배포해야한다.
  • 실행 파일의 크기가 커진다.

 

dll 쓰는 이유는 무엇일까?

  1. Lib 실행파일에 직접 포함되기 때문에 라이브러리에 문제가 생기면 수정된 라이브러리가 포함된 실행파일을 재빌드 해야한다. 이러한 불편함을 줄이기 위해 dll을 사용한다. Dll lib처럼 실행파일에 종속된 개념이지만 dll 빌드 시에 실행 파일에 포함되지 않고 프로그램 실행될 해당 dll파일을 포함(연결)해서 실행하게 된다. , lib파일은 빌드시에 실행파일에 포함되지만 dll파일은 프로그램이 실행될 실행 파일에 포함되는 개념이다.
  2. 코드를 여러 프로그램이 사용하기 때문에 메모리가 절약된다.

프로그램이 HDD,ROM같은 거에 저장되어있다고 가정해보자. 이때 5개의 프로그램이 특정 라이브러리가 필요하다고 한다면 프로그램마다 라이브러리를 가져다 경우(정적) 크기가 그만큼 늘어난다. 하지만 동적으로 링크할경우 5개의 프로그램이 하나의 라이브러리를 공유하기 때문에 공간이 많이 절약된다. 이로 인해 실행 파일 자체가 작아진다.

  1. dll 장점에서 말했듯이 배포한 프로그램을 수정할때 dll 수정하면 되기 때문에 교체가 용이하다.

 

내용대로라면, static library 불필요한 존재 같아보이는데, 맞나요?

 

 

Linking :

컴파일 이후 실행하기 이전에 작성한 프로그램이사용하는 다른 프로그램이나 라이브러리를 가져와 연결하는 과정을 말한다. 생각해보면 당연한 것이다. 다른 라이브러리에 함수를 불러와 코드를 짰는데 실행할때 그함수가 먼지를 모르면 정상적으로 실행될 수가 없다.

 

Static Linking(정적링킹) : 실행 가능한 목적 파일을 만들 때 프로그램에서 사용하는 모든 라이브러리 모듈을 복사하는 방식을 말하며 링커에 의해 이루어진다.

 

Dynamic Linking(동적링킹) : 실행 가능한 목적 파일을 만들 때 프로그램에서 사용하는 모든 라이브러리 모듈을 복사하지 않고 해당 모듈의 주소만을 가지고 있다, 런타임에 실행 파일과 라이브러리가 메모리에 위치될 때 해당 모듈의 주소로 가서 필요한 것을 들고 오는 방식이다.

 

 

컴파일이란?

사람이 작성한 코드를 컴퓨터가 이해할 있는 기계어로 변환해주고 실행 가능한 프로그램이 되며, 이러한 편집과정을 컴파일 타임이라고 한다. 런타임은 컴파일 과정을 마친 프로그램이 실제로 실행되고 있는 때를 말한다.

'C# > C#에 대한 다양한 공부' 카테고리의 다른 글

시작하세요 C# 9.0 프로그래밍  (0) 2022.07.06
C# 해시테이블 vs 딕셔너리 [hashtable vs dictionary]  (0) 2022.07.04
닷넷 프레임 워크 구조  (0) 2022.07.01
Static, 싱글톤  (0) 2022.07.01
[async/await]  (0) 2022.07.01