공유 라이브러리는 시스템 라이브러리 디렉토리 내에 대체로 .so 라는 확장자를 가지면서 존재하는 라이브러리로서 어떤 프로그램이 실행중에 필요한 경우에만 라이브러리 디렉토리로 부터 불러서 읽어 들여 실행을 하고 필요 없는 경우에는 메모리로 부터 unloading 을 시키는 그런 라이브러리를 말합니다. /usr/lib 디렉토리 내에 보시면 .so 라는 확장자를 가진 많은 라이브러리들을 보실수 있습니다. 이렇게 되어 있을 경우 각각의 프로그램 내부에는 그 라이브러리를 가지고 있을 필요가 없으므로 프로그램의 사이즈가 줄어 드는 장점을 가질 수 있습니다. 하지만 그 공유 라이브러리가 없는 시스템에서는 그 프로그램은 실행될 수 없다는 단점도 있게 됩니다.
정적 라이브러리라는 것은 컴파일시에 프로그램 내부에 포함되어 들어가는 라이브러리를 말합니다. 대체로 .a 라는 확장자를 가집니다. 프로그램 내부에 그 라이브러리를 포함시켜 줄 경우 일단 시스템상에 그 라이브러리가 없더라도 아무런 문제없이 프로그램을 구동시킬수 있다는 장점을 가지게 되며 실행시 라이브러리를 로딩할 필요가 없으니 당연히 속도가 빨라집니다. 하지만 프로그램이 커지게 되는 단점을 가지게 됩니다. /usr/lib 내에 보시면 역시 .a 라는 확장자를 가지는 많은 라이브러리들을 확인하실 수 있을 것입니다.
>>초보자 님께서 쓰시길<<
:: 허정수님이 쓰신 MySql & Web DB 연동이라는 책에서요..
:: 정적으로 컴파일 하면 속도가 크게 향상 된다고 하셨는데요
:: 정적으로 컴파일하는게 공유 라이브러리를 사용하지 않는걸 말하는건가요
:: mysql에서 공유 라이브러리가 하는역확은 무었이죠...
:: 만약에 공유라이브러를 사용하지 않는다면... 사용하는거랑 무슨 차이가 있습니까...
::
:: ---- 초보도 노력하면.. 고수가 될수있다~~~~ ^^
|