[incremental-linking] “증분 연결”이란 무엇입니까?

나는 마이크로 소프트의 MSDN과 웹의 모든 부분을 살펴 봤지만 여전히 그것이 무엇인지에 대해 정말 좋은 아이디어를 얻지 못했습니다.

완료된 프로그램이 실행 중 다른 시간에 DLL을로드한다는 의미입니까?

내가 완전히 벗어 났나요? 🙂



답변

링크에는 소스 파일에서 빌드 된 모든 .obj 파일과 참조하는 모든 .lib 파일을 출력 (예 : .exe 또는 .dll)으로 패키징하는 작업이 포함됩니다.

증분 링크가 없으면 매번 처음부터이 작업을 수행해야합니다.

증분 링크는 exe / dll을 약간 변경하고 다시 컴파일 할 때 링커가 기존 exe / dll을 더 쉽게 업데이트 할 수있는 방식으로 연결합니다.

따라서 증분 링크를 사용하면 프로젝트를 더 빠르게 컴파일하고 연결할 수 있습니다.

이것이 가질 수있는 유일한 런타임 효과는 여기에 설명 된대로 exe / dll을 약간 더 크고 느리게 만들 수 있다는 것입니다.

http://msdn.microsoft.com/en-us/library/4khtbfyf.aspx

편집 : Logan이 언급했듯이 증분 링크는 링크 타임 코드 생성 과도 호환되지 않으므로 가능한 성능 최적화가 손실됩니다.

개발 속도를 높이기 위해 디버그 빌드에 증분 링크를 사용하고 런타임 성능을 향상시키기 위해 릴리스 빌드에 대해서는 비활성화 할 수 있습니다.

지연로드 된 DLL은 다음과 같이 생각할 수 있습니다.

http://msdn.microsoft.com/en-us/library/151kt790.aspx


답변

또한 매우 중요한 점은 증분 링크가 Edit&Continue다시 시작하지 않고 즉시 코드를 편집하고 다시 컴파일 하기위한 전제 조건이라는 것입니다 .

따라서 디버그 빌드에있는 것이 좋지만 릴리스 빌드에는없는 것이 좋습니다.


답변