Library
반복되는 로직들을 따로 빼서 재활용 하는 것이 함수지향 개발법이다.
비슷하고 반복되는 로직을 따로 함수로 빼어내어, 입력값, 출력값, 함수로 간편하게 재활용 하는 것이다.
하지만 프로젝트 만들때 마다 다시 함수를 만들어야 하는 불편함이 생겼다.
이러한 불편함을 해결하기 위하여 나온것이 라이브러리다.
자주 쓰이는 함수들을 모아둔 파일을 따로 떼어내어, 프로젝트에 라이브러리 파일을 include 시켜주면
라이브러리의 함수를 사용할 수 있다.
이런 라이브러리는 언제 메인프로그램에 연결하느냐에 따라 Static Link와 Dynamic Link로 나뉜다.
Static Library Link
정적 라이브러리는 컴파일 타임에 내 소스와 결합되는 것을 말한다.
즉, 컴파일시 해당 파일 내의 함수들이 모조리 복사되어 프로그램 소스코드 위에 붙여넣기 된 채로 컴파일 되는 것이다.
이렇게 되면 실행파일만 건내주어 배포가 쉽지만, 라이브러리의 용량에 따라 실행파일의 크기가 커지게 된다.
각각의 소스파일에서 호출한 함수들을 라이브러리에서 가져와 실행파일에 붙여준다.
Dynamic Library Link
동적라이브러리는 프로그램 실행시에 내 프로그램이 해당 DLL 내의 함수를 원한다면 그때에 DLL에 접근하여 사용후,
다시 코드 흐름이 되돌아오는 방식이다.
따라서 DLL 파일은 컴파일 후에도 실행파일과 독립되어있으며, 배포시에도 DLL 파일의 위치를 실행파일에서 설정한 공간에 위치시켜줘야 한다.
DLL 은 실행파일과 다른 파일이므로 필요한 시점에 메모리로 읽어오고 불필요하면 메모리에서 내릴 수 있다.
DLL의 이점
프로그램 개발은 모듈별로 나누는 것이 중요한데, DLL은 이 모듈화를 이루게 해준다.
코드에서 DLL을 사용하는 식으로 코딩한 후, 모듈을 수정할 시
정적 라이브러리 방식이라면 해당 라이브러리를 가지고 다시 컴파일 하야하지만,
DLL 방싱은 실행파일을 수정하지 않고 DLL 파일만 배포하면 프로그램 수정이 끝난다.
Refernece
https://wiserloner.tistory.com/417
'Cryptography' 카테고리의 다른 글
PKCS (Public Key Cryptography Standard) (0) | 2020.12.20 |
---|---|
DLL 인젝션 (0) | 2020.03.16 |
DES (Data Encryption Standard) (0) | 2020.01.29 |
RSA 암호화 (0) | 2020.01.13 |
Unicode (0) | 2020.01.12 |