Contents

Views 6944 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
[라이브러리의 정의]
라이브러리(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
No. Category Subject Author Date Views
1173 Develop '2014 모바일 개발 트렌드' 발표자료입니다. file hooni 2014.10.02 978
1172 System/OS Apache CORS 설정 1 hooni 2020.09.04 2711
1171 Develop Aspect Oriented Programming in Objective-C hooni 2015.05.18 674
1170 System/OS asx미디어 정보 기록.. hooni 2003.04.23 20533
1169 System/OS CentOS 6.5 USB 설치 6 file hooni 2013.12.18 37676
1168 System/OS CentOS 에서 Cacti 설치하기 hooni 2015.01.02 1764
1167 System/OS Configure Postfix to Use Gmail SMTP on Ubuntu 18.04 file hooni 2020.02.07 1248
1166 Develop DDay Memo 1.9.4 소스코드 secret hooni 2015.10.03 0
1165 Etc EBS [수학영역] 미적분과 통계 기본 - 정규분포의 의미와 특징은? hooni 2015.04.20 1001
1164 System/OS Enable Safari Hidden Debug Menu in Mac OS X file hooni 2017.02.07 1142
1163 System/OS Enable the Develop Menu in Safari file hooni 2017.02.07 1069
1162 Develop GCM 사용하기 2 (단말에 GCM 구현하기) file hooni 2013.07.06 23248
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 98 Next
/ 98