라이브러리(Library)
라이브러리란?
다른 프로그램들과 링크되기 위해 존재하는, 주로 소프트웨어를 개발할 때 공통으로 사용될 수 있는 특정한 목적을 가진 함수, 클래스, 데이터 등을 모아놓은 비휘발성 자원의 모임입니다. 비휘발성이란 컴퓨터 전원이 꺼져도 정보가 지워지지 않고 계속해서 남아있는 것을 의미합니다.
라이브러리 장점 및 목적
라이브러리의 목적은 코드 재사용에 있습니다. 소프트웨어를 개발할 때마다 반복되는 작업들을 처음부터 코딩할 필요 없이 라이브러리에서 가져와서 사용하면 시간도 절약할 수 있고 개발도 용이해지기 때문이죠.
예를 들어 어떤 수의 거듭제곱을 구해주는 기능을 추가하려고 하는데 라이브러리가 없다면 밑(기저)와 지수를 입력받아 거듭제곱을 직접 구하는 코드를 작성해야 합니다. 이때 Math 라이브러리를 사용하거나 개발자 자신이 이전에 만들어 놓은 라이브러리에서 거듭제곱을 해주는 기능을 가져온다면 일일이 코딩할 필요가 없어지겠죠? 또한 검증받은 라이브러리들은 최적화도 되어있기 때문에 좋은 퍼포먼스를 가지고 있습니다.
라이브러리는 보통 컴파일되어 목적(object)파일로 존재하는데, 때문에 소스코드를 공개하지 않고 배포할 수 있다는 장점도 가지고 있습니다. 정적 라이브러리를 사용할 경우 컴파일 과정 후에 목적 파일들을 링커를 통해 링크할 때 묶이기 때문입니다. 소프트웨어에서 요구되는 모든 기능들을 메인 코드에서 해결한다면 수정 시마다 메인 코드를 수정하고 다시 컴파일해야 하는데 라이브러리를 사용한다면 라이브러리 내에서 수정하고 라이브러리만 다시 컴파일하고 링커과정에서 링크하면되므로 메인 코드를 다시 컴파일할 필요가 없습니다. 따라서 라이브러리를 사용하면 컴파일 시간을 절약할 수 있고 또한 수정하기가 더 용이합니다.
라이브러리의 종류
1. 정적 라이브러리
라이브러리가 프로그램 컴파일 시에 실행파일에 포함되어 배포되는 방식입니다. 미리 컴파일 되어있는 라이브러리 파일을 사용하므로 컴파일 시간이 단축됩니다. 프로그램 실행파일의 크기가 커지는 단점이 있지만, 배포해야 하는 파일이 실행파일 하나만으로 충분하다는 장점을 가지고 있습니다. 그러나 동일한 라이브러리를 포함한 유사한 프로그램들이 동시에 실행될 경우, 똑같은 코드들이 불필요하게 많은 메모리 자원을 중복해서 사용하는 문제가 발생할 수 있고 실행파일의 크기가 매우 커질 가능성이 있습니다.
2. 동적 라이브러리
프로그램 실행중에 필요할때만 일시적으로 라이브러리를 가져와 사용하는 방식입니다. 실행파일의 크기를 줄일 수 있고, 사용이 끝나면 메모리에서 해제되므로 메모리를 효율적으로 사용할 수 있다는 장점이 있습니다. 그러나 실행파일 배포시 exe 파일과 함께 dll 파일이 추가로 배포되어야 한다는 단점이 있고 의존성 문제로인해 오류가 발생할수 있다는 단점이 존재합니다.
'기타' 카테고리의 다른 글
visual studio 폰트 변경, 추가하기 (0) | 2019.12.24 |
---|---|
Visual Studio Code 단축키 정리 (0) | 2019.09.21 |
API (0) | 2018.09.03 |