라이브러리란 특정한 코드(함수 혹은 클래스)를 포함하고 있는 컴파일된 파일이

 

 

 

 

라이브러리를 만드는 이유는 자주 사용되는 특정한 기능을 main 함수에서 분리시켜 놓음으로써, 프로그램을 유지, 디버깅을 쉽게하고 컴파일 시간을 좀더 빠르게 할수 있기 때문이다.

 

 

 

 

라이브러리에도 그 쓰임새에 따라서 여러가지 종류가 있다(크게 3가지). 가장 흔하게 쓰일수 있는 "정적라이브러리"와 "공유라이브러리", "동적라이브러리" 가 있다. 이들 라이브러리가 서로 구분되어지는 특징은 (로드) 시간이 될것이다.

 

http://cafe.naver.com/whatvoip.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=202&

 

 

C로 만든 라이브러리를 C++ 프로젝트에 사용할때는 주의 하자. 컴파일 과정에서 만들어진 라이브러리의 함수명이 차이가 있다. C 로 만든 라이브러리는 C프로젝트에서, C++로 만든 라이브러리는 C++프로젝트에서

 

 

 

 

 


정적라이브러리 

 

정적라이브러리는 object file(.o로 끝나는) 의 단순한 모음이다. 정적라이브러린느 보통 .a 의 확장자를 가진다. 간단히 사용할수 있다. 컴파일시 적재(로드)되므로 유연성이 떨어진다. 최근에는 정적라이브러리는 지양되고 있는 추세이다. 컴파일시

적재(로드)되므로 아무래도 바이너리크기가 약간 커지는 문제가 있을것이다.

 

 

공유라이브러리


공유라이브러리는 프로그램이 시작될때 적재(로드)된다. 만약 하나의 프로그램이 실행되어서 공유라이브러리를 사용했다면, 그뒤에 공유라이브러리를 사용하는 모든 프로그램은 자동적으로 만들어져 있는 공유라이브러리를 사용하게 된다. 그럼으로써 우리는 좀더 유연한 프로그램을 만들수 잇게 된다.

 

정적라이브러리와 달리 라이브러리가 컴파일시 적재되지 않으므로 프로그램의 사이즈 자체는 작아지지만 이론상으로 봤을때, 라이브러리를 적재하는 시간이 필요할것이므로 정적라이브러리를 사용한 프로그램보다는 1-5% 정도 느려질수 있다. 하지만 보통은 이러한 느림을 느낄수는 없을것이다.

 

 

동적라이브러리


공유라이브러리가 프로그램이 시작될때 적재(로드)되는 반면 이것은 프로그램시작중 특정한때에 적재(로드)되는 라이브러리이다. 플러그인 모듈등을 구현할때 적합하다. 설정파일등에 읽어들인 라이브러리를 등록시키고 원하는 라이브러리를 실행시키게 하는등의 매우 유연하게 작동하는 프로그램을 만들고자 할때 유용하다.

 

 


 

 


정적 라이브러리와 동적 라이브러리 차이  C++ /API/MFC 

2011/10/13 15:15

복사http://blog.naver.com/hacker1420/120142196000

정적 라이브러리(lib) : 컴파일할 때 같이 링크 

동적 라이브러리(dll) : 컴파일 할 떄가 아닌, 실제로 프로그램이 실행될 때 동적으로 링크

 

둘 다 실행 모듈이지만 언제 링크가 되느냐의 차이!

메모리를 효율적으로 쓰기 위해서는 lib 보다 dll 방식이 좋음.(필요할 때만 링크해서 쓰고 필요 없으면 바로 해제)

lib 방식은 프로그램이 실행되면 바로 메모리를 차지하고 프로그램이 종료될 때까지 메모리에 남아있음.

반응형

+ Recent posts