다음 이전 차례

1. 개요

이 하우투 문서는 프로그래머가 어떻게 GNU의 툴셋을 이용하여 리눅스에 서 프로그램 라이브러리를 생성하고 이용할수 있는지를 다룬다. 프로그램 라이 브러리란 단순하게 보면 나중에 어떤 프로그램 코드에 끼워넣어질수 있는 컴 파일된 코드(그리고 데이터)가 들어있는 파일이며, 이를 통해서 프로그램들은 더욱 모듈화될수 있으며, 재컴파일이 빠르며, 갱신이 용이해진다. 프로그램 라 이브러리는 정적, 공유, 동적(DL) 라이브러리의 세가지 형태로 대별된다. 먼저 프로그램이 실행되기전에 미리 실행프로그램에 설치되는 정적 라이브 러리가 다루어 질것이며, 그 다음은 프로그램 시작시에 적재되어 여러 프로그 램에 의해 공유되는 공유 라이브러리, 그리고 마지막으로 프로그램 실행중의 어떤 순간에도 적재 및 사용이 가능한 동적 라이브러리를 다룰 것이다. 동적 라이브러리를 다른 어떤 한 라이브러리의 포맷이라고 보기는 어려울 것이 다.(정적 라이브러리이건 공유 라이브러리이건 모두 동적 라이브러리로 사용 가능함) 대신 동적 라이브러리가 다른점은 그것이 프로그래머에 의해서 이용 되는 방식에 있는 것이다. 이 책의 다른 장에는 그것의 예들과 참고할 만한 문 헌들을 실을 것이다.

이 책은 이제는 대부분의 리눅스 배포본에서 사용되는 ELF 포맷의 실행 프로그램과 라이브러리만을 다룰 것이다. GNU의 gcc 툴셋은 ELF외에 다른 형태의 라이브러리도 다룰수 있는데 아직도 대부분의 리눅스 배포판은 이미 퇴물이된 a.out형의 포맷을 다루고는 있다, 하지만 이것은 이책의 범위를 벗 어난 얘기이다.

어떤 사람들은 동적 링크 라이브러리(DLL)란 용어를 사용하여 공유라이브 러리를 칭하기도 하고, 때론 정적이건 공유건 동적 라이브러리로 사용될 때 DLL이라 칭하기도 하고 또, 때로는 위의 두 조건을 모두 만족할 때 DLL이란 용어를 쓰기도 하나 이것은 별로 중요한 얘기가 아니다. 이문서는 당신이 어 떤 의미를 선택하건간에 리눅스에서의 DLL을 다뤄줄 것이다.

만약 여러 시스템에 포팅될수 있는 프로그램을 개발하려 한다면 LINUX Tool을 바로 사용하는 것 보다는 GNU Libtool의 사용을 고려해 보길 바란다. GNU Libtool은 공유 라이브러리의 사용(생성과 설치등)의 복잡성을 일관되고 이식적인 인터페이스를 통해서 제거해주는 전형적인 라이브러리 지원 스크립 트이다. 리눅스에서 GNU Libtool은 Tool들중에서 최상위에 구현되어 있으며 그 사용관례도 이 하우투 문서에 기술되어있다. DL 라이브러리의 이식가능 한 인터페이스 구현을 위해서는 여러가지 이식성 구현장치가 있으며 그 중 GNU Libtool 은 "Libltdl" 이 포함되어 있다. 다른 선택으로는 glib 라이브러리 (glibc와 혼동하지말것)의 동적 모듈 적재의 이식성지원기능을 사용할수 있다. 그것을 사용하려 한다면 이 문서말고 [10] developer.gnome.org/doc/API/glib/glib-dynamic-loading-of-modules.html 에서 보길 바란다. 다시 한번 말 하건데 리눅스에서 라이브러리의 사용에 관한 제반 기능들의 구현이 이 문서 에서 기술될 것이며 리눅스용 코드를 개발중이거나 디버깅 중이라면 이문서의 내용이 유용할것이다.

이 하우투 문서의 메인주소는 [11] www.dwheeler.com/program-library 이며 LDP([12] http://www.linuxdoc.org)에 제공된다. 저작권자는 David A. Wheeler이며 GPL의 라이센스를 따른다.


다음 이전 차례