문제

에'C',Linux,

나 필요로 하는 정적 라이브러리에 정적으로 링크,또는 공유된 것을 내가 충분합니까?하지 않을 경우,왜?(지 않는 동일한 데이터를 포함?)

도움이 되었습니까?

해결책

예, 정적으로 연결된 실행 파일을 구축하려면 정적 라이브러리가 필요합니다.

정적 라이브러리는 컴파일 된 객체의 번들입니다. 라이브러리와 정적으로 연결하면 해당 라이브러리의 편집 결과를 취하고 현재 프로젝트에서 포장을 풀고 마치 자신의 객체 인 것처럼 사용하는 것과 효과적으로 동일합니다.

동적 라이브러리는 이미 연결되어 있습니다. 이는 이전과 같은 일부 정보가 이미 수정되어 버렸음을 의미합니다.

또한 동적 라이브러리는 위치 독립 코드로 컴파일해야합니다. 이는 정적 라이브러리의 제한이 아니며 일부 공통 플랫폼 (X86)에서 성능이 크게 차이를 초래합니다.

같은 도구가 있습니다 엘프 통계 동적으로 연결된 라이브러리를 동적으로 연결된 실행 파일로 번들로 묶으려고하지만 모든 상황에서 올바른 작업 결과를 생성하는 것은 매우 어렵습니다.

다른 팁

정적 컴파일과 같은 것은 없으며 정적 링크 만 있습니다. 이를 위해서는 정적 라이브러리가 필요합니다. 정적 링크와 동적 링크의 차이점은 전자의 경우 링크 타임 (컴파일 타임 직후)에서 이름이 해결되며, 후자와 함께 프로그램이 실행되기 시작하는 것처럼 해결된다는 것입니다.

정적 및 동적 라이브러리는 많은 요인에 따라 동일한 정보를 포함하거나 포함하지 않을 수 있습니다. 정적으로 또는 동적으로 코드를 연결하는지에 대한 결정은 중요한 것이며 종종 응용 프로그램 아키텍처에 영향을 미칩니다.

정적으로 연결된 프로그램에 연결된 모든 라이브러리는 정적 변형이어야합니다. Dynamic (libfoo.so) 및 static (libfoo.a) 라이브러리는 동일한 기능을 가지고 있지만 형식 파일이 다르므로 프로그램의 일치 유형이 필요합니다.

또 다른 옵션은 순백(http://magicErmine.com) 그것은 다음과 같 statifier 지만,거래를 할 수 있으로 메모리 랜덤.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top