Visual Basic, C & C++
C & C++ 분류

Dev C++ 실행파일 용량 줄이기

컨텐츠 정보

본문

You could blame the C++ headers and libraries for being a bit on the fat side, but complaints like that aside, there are quite a few ways to fix this:

  • You can remove any unused header information from exes using the -s command. It can be found under Tools >> Compiler Options >> Settings >> Linker for non-project compilations and Project >> Project Options >> Compiler >> Linker for project compilations. This is the most effective measure. Beware that debugging information is stripped too, so you won't be able to debug your program.
  • Using C headers instead of C++ ones will help a great deal too, but I understand that's usually not an option.
  • You can tell the compiler to optimize the assembly for size, by using -Os. Please check the 'Optimization Level' option for this.
  • You can decide to dynamically link library data by removing '-static-libgcc' and the other -static flag from Tools >> Compiler Options >> General. This will shrink the exe, but you will be forced to provide DLLs when you need to run your exes.

I hope I could be of help.

----------------------------------------------------------

https://sourceforge.net/p/orwelldevcpp/forums/compiling/thread/a4ca8874/ 


C++ 헤더와 라이브러리가 약간 뚱뚱하다고 비난할 수 있지만, 그런 불만은 제쳐두고 이 문제를 해결할 수 있는 몇 가지 방법이 있습니다.

  • -s 명령을 사용하여 exe에서 사용하지 않는 헤더 정보를 제거할 수 있습니다. 비프로젝트 컴파일의 경우 도구 >> 컴파일러 옵션 >> 설정 >> 링커, 프로젝트 컴파일의 경우 프로젝트 >> 프로젝트 옵션 >> 컴파일러 >> 링커에서 찾을 수 있습니다. 이것은 가장 효과적인 조치입니다. 디버깅 정보도 제거되므로 프로그램을 디버깅할 수 없습니다.
  • C++ 헤더 대신 C 헤더를 사용하는 것도 많은 도움이 될 것이지만 일반적으로 선택 사항이 아니라는 것을 알고 있습니다.
  • -Os를 사용하여 크기에 맞게 어셈블리를 최적화하도록 컴파일러에 지시할 수 있습니다. 이를 위해 '최적화 수준' 옵션을 확인하십시오.
  • 도구 >> 컴파일러 옵션 >> 일반에서 '-static-libgcc' 및 기타 -static 플래그를 제거하여 라이브러리 데이터를 동적으로 연결하도록 결정할 수 있습니다. 이렇게 하면 exe가 축소되지만 exe를 실행해야 할 때 DLL을 제공해야 합니다.

도움이 될 수 있기를 바랍니다.


관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
성공하느냐 실패하느냐는 다른 사람이 아닌 바로 내가 하는 일이다. 내가 바로 힘이다. 나는 내 앞의 장애물을 치울 수도 있고, 미로 속에서 길을 잃을 수도 있다. 내 선택, 내 책임 이다. 이기거나 지는 것은 오직 나만이 가진 내 운명의 열쇠에 달려있다. (알레인 맥스웰)