문제

나는 C ++ 빌드 흐름에 익숙하지 않으며 생성하는 대신 라이브러리의 부분 링크를 사용하도록 전환 할 생각입니다. ar 아카이브. 필연적 인 최종 컴파일 단계에서 링크 시간을 줄이기를 희망하며, 일부 라이브러리를 한 번 연결하면 최종 단계에서 모든 것을 연결하는 데 시간을 절약 할 수 있습니다.

내가 묘사 한 것이 가능합니까? 나는 그것이 선을 따라 무언가가되어야한다고 생각한다 ld -Ur -o mylib.o [components]. 내가 고려하지 않는 중요한 빌드 고려 사항이 있습니까?

도움이 되었습니까?

해결책

당신은 객체 파일을 ar 아카이브는 참조 된 객체 만 연결됩니다.

둘 다 있다는 경우 foo.o 상징으로 foo 그리고 기호와 함께 bar.o bar 에서 ar 아카이브 및 참조 만 참조하십시오 foo 기호 만 foo.o 링크 될 것입니다. 대신 부분 링크를 수행하면 두 내용이 실행 파일로 끝납니다. bar 아무데도 참조되지 않습니다.

더 빠른 링커를 시도 할 수도 있습니다 .

다른 팁

LD -R을 사용하여 부분 링크를 수행하려는 다른 시간은 특정 기능을 제공하는 데 필요한 정적 초기화를 포함하는 객체 파일이 있지만 코드에서 직접 호출되지는 않습니다.

원한다면 이것이 어떻게 작동하는지, 왜 작동하는지를 보여주는 문서를 작성할 수 있습니다!

(예를 들어, 런타임 C ++ 클래스 등록을 참조하십시오. 예를 들어, 레지스트리에 자체적으로 등록되는 정적 레지스터 함수를 사용하여 기본에서 상속 된 새 개체를 만들었 기 때문에 다형성 동작으로베이스*를 생성하고 반환하는 데 사용할 수 있습니다. 보다 C ++ 클래스의 런타임 지식 내가 묻는 질문에 대한 답변입니다.)

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