Views 6944 Votes 0 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
357 Develop [linux] 날짜나 파일의 내용으로 검색하는 방법(find 명령 사용) hooni 2013.04.23 8114
356 System/OS [linux] 네트워크 커널 설정.. hooni 2003.04.23 16472
355 System/OS [linux] 네트웍 트래픽 모니터링(MRTG) hooni 2003.04.23 41783
354 System/OS [linux] 데비안(debian.org) 리눅스 명령어 예제 hooni 2006.04.23 10422
353 System/OS [linux] 데스크탑환경(GNOME/KDE) 바꾸기.. hooni 2003.04.23 12101
352 System/OS [linux] 랜카드 2개 설정 & iptables 로 사설 ip.. hooni 2003.04.23 14732
351 System/OS [linux] 랜카드가 2개 일 때 네트워크 설정 hooni 2003.04.23 30015
350 System/OS [linux] 리눅스 파일시스템과 디렉토리 설명 hooni 2013.04.23 26877
349 System/OS [linux] 리눅스 활용 팁^^ hooni 2003.04.23 14629
348 System/OS [linux] 리눅스, 유닉스 CPU 이용률 확인.. hooni 2013.04.23 23782
347 System/OS [linux] 리눅스,유닉스 /proc/stat 파일 보는 법 hooni 2013.04.23 17916
346 System/OS [linux] 메일서버 세팅정보(sendmail) hooni 2003.04.23 17407
345 System/OS [linux] 메타(기호)문자의 의미와 사용 hooni 2003.04.23 16384
344 System/OS [linux] 새 하드디스크 추가하기..(내공쌓기) hooni 2003.04.23 13807
343 System/OS [linux] 센드메일 동적릴레이 설치 hooni 2003.04.23 15228
342 System/OS [linux] 셀 스크립트 if, for, case in.. hooni 2003.04.23 13686
Board Pagination Prev 1 ... 50 51 52 53 54 ... 74 Next
/ 74