동적으로 링크 된 300 KB
애플리케이션이 있었기 때문에 정적 링크 빌드를 시도하기로 결정했습니다.정적으로 연결된 애플리케이션 크기 축소
나는 다음과 같이 Qt는 구성 : 만 종속성에 연결했던 동적으로 링크 된 빌드에
configure -c++11 -mp -static -debug-and-release -platform win32-msvc2012 -opengl desktop -opensource -confirm-license -make libs -nomake tools -nomake tests -nomake examples -no-openssl -skip webkit
:
qtmain.lib
Qt5Gui.lib
Qt5Core.lib
Qt5Widgets.lib
Qt5Network.lib
Qt5WinExtras.lib
qwindows.lib
지금은 15 라이브러리를 사용한다! 내 솔루션에 정규 표현식도 프리 타입을 사용하지 않는 경우 내 말은
qtmain.lib
qtpcre.lib
Qt5Gui.lib
Qt5Core.lib
Qt5Widgets.lib
Qt5Network.lib
Qt5WinExtras.lib
opengl32.lib
imm32.lib
Ws2_32.lib
Qt5PlatformSupport.lib
qtfreetype.lib
winmm.lib
qtharfbuzzng.lib
qwindows.lib
, 왜 qtpcre
, 또는 qtfreetype
에 연결해야합니까? 나는 정말로 그것들 모두를 필요로합니까?
전적으로 최적화하려고했습니다.
결과에서 내 응용 프로그램 크기는 10,731KB이고 정말 실망스럽고 우울합니다. 그것을 줄일 가능성이 있습니까? 외부 응용 프로그램은 아마도?
(예, 나는 그것이 정적 빌드 그리고 그것은 7메가바이트 이하의 파일이 아닐 것이다, 그러나 어쩌면 내가 적어도 10메가바이트 아래 얻을 수 알고?)
동적 라이브러리 세트에 의존합니다. 그것들은 차례로 다른 라이브러리에 의존 할 수있는 다른 동적 라이브러리에 의존합니다. 정적으로 링크하는 경우 종속성 트리의 모든 라이브러리와 링크해야합니다. 그리고 네, 실행 파일이 정말로 커질 수도 있지만 정적 링크의 트레이드 오프입니다. 그리고 메모리 요구 사항은 실제로 변하지 않을 것입니다. 모든 동적 라이브러리는 여전히로드되어야합니다. 정적으로 링크하는 것은 실제로 OS에 의해로드되어야하는 파일이기 때문에 실제로는 메모리를 절약 할 수 있습니다. –
정규 표현식을 사용할 필요는 없지만, 사용하는 qt 라이브러리 함수는 정규 표현식이 필요하므로 링크되어야합니다. 정적 링크를 사용하려면 모든 간접적 인 종속성을 찾는 것이 이제 여러분의 책임입니다. 다이나믹 링커를 사용하는 경우에도 동적 링커가 모든 코드를 처리한다는 점을 제외하고는 모든 코드를 사용하고 있습니다. –
또한 디버그 또는 릴리스 빌드에 표시되는 크기입니까? 실행 파일에서 디버그 및 기타 메타 데이터를 제거하려고 시도 했습니까? 속도보다는 크기를 최적화하기 위해 컴파일러 플래그를 전달 하시겠습니까? –