제 직장에서는 우리 제품이 정적 라이브러리 (.lib) 또는 공유 라이브러리 (.dll)로 링크 된 하위 프로젝트로 실행 파일로 컴파일됩니다. 우리는 Microsoft C++ 컴파일러를 사용합니다..o (오브젝트 파일)가 .lib (정적 라이브러리)보다 빨리 링크되는 이유는 무엇입니까?
최근 내 동료 중 한 명이 .lib (정적 라이브러리)에서 .o (개체 파일)로 서브 프로젝트 대상을 변환했으며 해당 하위 프로젝트의 연결 시간이 크게 줄었습니다. 이전에 .lib는 링크하는 데 약 1.5 분이 걸립니다. .o에 연결하면 연결 시간이 거의 5-6 초가됩니다.
왜 .lib를 느리게 링크합니까?
흥미로운 주제. 내 생각 엔 오브젝트 파일이 이미 링커에 대해 편리한 형식으로되어 있기 때문에 그 구조가 예상됩니다. –
흠, 그럴 가치가있는 일이 아니며 .obj 파일은 단일 소스 코드 파일에 대한 코드 만 저장할 수 있습니다. 링커는 쉽게 속지 않으며 아마 여전히 라이브러리로 인식합니다. 아마도 당신은 링크의 값 비싼 부분 인 경향이있는 .pdb 파일 인 라이브러리에 대한 디버그 정보 생성을 망칠 것입니다. 언젠가 당신이 그것을 디버깅 할 필요가있을 때 꽤 불쾌한 놀라움을 생산해야합니다. VS2015 업데이트 1부터 사용할 수있는/DEBUG : fastlink 옵션을 살펴보십시오. 물론 코드를 별도의 모듈 인 DLL로 돌리면 빌드 시간이 크게 단축 될 수 있습니다. –