조회 수 6942 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
[라이브러리의 정의]
라이브러리(library)는 다른 프로그램들과 링크되기 위하여 존재하는, 하나 이상의 서브루틴(subroutine)이나 함수(function)들의 집합 파일 말하는데 함께 링크(link)될 수 있도록 보통 컴파일된 형태인 목적코드(object code) 형태로 존재한다. 라이브러리는 코드 재사용을 위해 조직화된 오래된 기법 중의 하나이며, 많은 다른 프로그램들에서 사용할 수 있도록, 운영체계나 소프트웨어 개발 환경 제공자들에 의해 제공되는 경우가 많다. 

라이브러리라는 기술이 생긴 이유는 코드의 재사용 및 부품화 실현, 소스를 제공하지 않음으로서 중요 기술의 유출을 방지할 수 있고, 라이브러리는 사용하는 개발자들로서는 대형 어플리케이션 개발 시간을 단축시킬 수 있다는 장점들이 주어지기 때문이다.

라이브러리 내에 있는 루틴들은 두루 쓸 수 있는 범용일 수도 있지만, 3차원 애니메이션 그래픽 등과 같이 특별한 용도의 함수로 설계될 수도 있다. 

라이브러리들은 사용자의 프로그램과 링크되어, 실행이 가능한 완전한 프로그램을 이룬다. 이러한 링크는 대개 정적으로 연결(static link)되지만, 시스템에 따라 동적으로 연결(dynamic link)될 수도 있다. 

[정적 라이브러리]
라이브러리에 포함된 목적 코드(object code)가 실행 프로그램 컴파일 시에 실행 파일에 복사(포함)되어 배포되는 방식이다. 기본적을 필요한 기능(routine)이 실행 파일과 동일한 위치에 존재하기 때문에 프로그램 실행파일이 커지는 단점이 있지만, 배포해야 하는 파일이 실행파일 하나 만으로 충분하다는 장점을 가지고 있다.
일반적으로 Unix, Linux, DOS 등 소개된지 오래된 OS에서는 정적 라이브러리 확장자로 lib, l 등을 사용한다. 최근에 소개되는 자바, C# 등에서는 동적 라이브러리를 적극 도입하는 추세이다.

[동적 라이브러리]
정적 라이브러리의 단점은 실행 프로그램의 크기가 커지는 문제뿐만 아니라, 동일한 라이브러리를 포함한 유사한 프로그램들이 동시에 실행될 경우, 똑같은 코드(code)들이 불필요하게 많은 메모리 자원을 중복해서 사용하는 문제가 발생한다. 게다가, 점차 복잡해지는 소프트웨어의 구조 상 실행 파일 크기가 기하급수적으로 커지는 단점도 있다. 따라서, 어플리케이션들에서 사용되는 공통되는 모듈을 메모리에 단 한 차례만 적재하고 사용할 수 있는 방안을 강구하게 되었다.
이 방식은 실행 프로그램에 항상 라이브러리를 포함하하는 것이 아니라 필요할 때만 라이브러리를 메모리로 불러 들이기 때문에 동적 라이브러리라고 이름 붙였다. (정적 라이브러리는 동적 라이브러리가 나타나기 이전에는 그냥 라이브러리라고 불리웠다.)

동적 라이브러리의 장점은 앞서 설명한 바와 같이 실행 파일의 크기를 줄여주며, 사용이 끝나면 메모리에서 삭제되기 때문에 메모리를 보다 효율적으로 사용할 수 있다.

그러나, 프로그램 배포시에 exe 파일과 함께 dll 파일이 추가로 배포해야 한다는 단점이 있다. dll 파일이 없으면 컴파일 시에는 에러가 나지 않지만 실행 시에는 라이브러리를 찾을 수 없다는 오류가 발생하며, 라이브러리의 이름은 정확하지만 만일 버전이 적절하지 않다면, 역시 문제가 발생할 우려가 있다.

[출처] http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/C/Documents/CprogramingForLinuxEnv/Ch12_module?action=highlight&value=%B5%F0%BD%BA%C5%A9%20%BF%EB%B7%AE
?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
25 Develop [ios] WWDC 2015 샘플 소스 코드 통합파일 hooni 2015.07.20 653
24 Develop [ios] SBCampanion App 초안 file hooni 2015.09.16 647
23 Develop [ios] VIN Scanner (VIN barcode) 스캐너 file hooni 2017.09.16 638
22 Develop [ppt] iOS 플라랩#04(2015.06.19) 발표 자료 file hooni 2015.06.04 636
21 Develop [sh] html 안에 있는 img 다운 받는 쉘 스크립트 file hooni 2020.05.26 629
20 Develop [ios] NSData to NSString (NSString to NSData) hooni 2015.07.21 628
19 Develop [ios] 앱의 로컬 js 파일에서 해당 프로젝트의 이미지 불러오기 hooni 2015.02.10 619
18 Develop [php] XE에서 도메인 별로 광고 다르게 적용하기 file hooni 2015.01.28 608
17 Develop [ios] 새로 만들고 있는 DateMemo file hooni 2016.07.12 594
16 Develop [php] XE 스킨에서 특정 도메인 리다이렉션 file hooni 2015.01.28 569
15 Develop [js] 주소표시줄 URL 읽어오기 (변경까지) secret hooni 2014.01.21 1
14 Develop [iphone] PerfectlyClear 보정솔루션 최신.. secret hooni 2013.05.28 0
13 Develop [ios] IB 없이 개발하기 (html) secret hooni 2013.05.31 0
12 Develop [ios] 스터디 자료 (from 종길M) secret hooni 2013.06.04 0
11 Develop [ios] 패스(path) 앱 메뉴 스타일 secret hooni 2013.06.11 0
10 Develop 이어서 작업할 내용~ secret hooni 2013.11.21 0
Board Pagination Prev 1 ... 49 50 51 52 53 Next
/ 53