2013-11-26 3 views
14

C 언어의 경우 정적 라이브러리와 동적 라이브러리의 차이점은 무엇입니까? 창에서정적 라이브러리와 동적 라이브러리의 차이점

+0

이 [http://stackoverflow.com/questions/20229364/what-is-the-difference-between-a-static-library-and-a-dynamic-one][1] 시도 [1] : http://stackoverflow.com/questions/20229364/what-is-the-difference-between-a-static-library-and-a-dynamic-one – Stef

답변

32

이 질문은 설명하기에는 너무 광범위하지만, 나는 더 이상 공부할 수있는 기본적인 아이디어를 제공하려고 노력할 것입니다.

먼저 라이브러리가 무엇인지 알아야합니다. 기본적으로 라이브러리는 함수 모음입니다. 코드 나 특정 파일에 정의되지 않은 함수를 사용하고 있음을 눈치 챘을 것입니다. 그것들에 접근하기 위해서, 우리는 헤더 파일을 포함하는데, 여기에는 그 함수들의 선언이 포함되어있다. 컴파일 한 후에는 링크라고하는 프로세스가 있으며이 함수 선언을 다른 파일에있는 정의와 연결합니다. 이 결과는 실제 실행 파일입니다.

이제 내가 설명한대로 연결은 정적 연결입니다. 즉, 모든 실행 파일에는 필요한 모든 라이브러리 (함수 모음)가 모든 실행 파일에 포함됩니다. 동일한 기능이 필요한 많은 프로그램이 있기 때문에 이것은 공간 낭비입니다. 이 경우 메모리에 동일한 기능의 사본이 더 많이있을 것입니다. 동적 인 링크는 컴파일 타임이 아니라 런타임에 링크함으로써 이것을 막는다. 즉, 모든 기능이 특수 메모리 공간에 있고 모든 프로그램이 여러 개의 사본을 가지지 않고도 액세스 할 수 있습니다. 이렇게하면 필요한 메모리 양이 줄어 듭니다.

내가 처음 대답에서 언급했듯이, 이것은 기본적인 이해를 돕기 위해 매우 단순화 된 설명입니다. 나는이 주제에 대해 더 많이 연구 할 것을 강력하게 제안한다.

+0

간결하고 잘 설명되어 있습니다. 고맙습니다! – SRG

2

:

정적 라이브러리는 실행 파일 내부에 연결됩니다와 시간이 변경되지 않습니다 lib 디렉토리 파일입니다.

동적 라이브러리는 실행 파일에 링크 된 .dll 파일이며 실행시로드하는 dll 파일에 따라 달라질 수 있습니다.

+0

확실하지 나는 DLL을 가지고 리눅스에서. – Daniel

관련 문제