2012-06-11 5 views
1

가능한 중복 : 난 그냥 몇 가지 C를 읽기 시작했습니다
GCC C++ “Hello World” program -> .exe is 500kb big when compiled on Windows. How can I reduce its size?내 C++ 실행 파일이 그렇게 큰 이유는 무엇입니까?

++ 온라인 자습서와 첫 번째 교훈은 안녕하세요 프로그램이었다. 프로그램을 실행 파일로 컴파일하면 크기가 단순한 Hello World 콘솔 프로그램인데도 400KB가 넘습니다. 이게 커다란 거니? 그렇지 않다면 왜 그렇게됩니까? 내가 뭔가 잘못하고 있는거야? 어떤 도움이 정말 감사하겠습니다

#include <iostream> 
using namespace std; 
int main() 
{ 
    cout<<"Hello World"; 
    cin.get(); 
} 

: 여기

는 소스입니다. 감사합니다

+1

프로그램을 어떻게 컴파일합니까? –

+4

디버그 또는 릴리스 버전을 구축 했습니까? 어떤 컴파일러를 사용하고 있습니까? 어떤 OS인가? 실행 파일의 크기에는 많은 요소가 있습니다. 제 생각에는 디버그 빌드가 있어야합니다. – pstrjds

+0

Debug/Release와는 아무 관련이 없습니다. 단지 ''은 다소 큰 일회성 비용을 유발합니다. 프로그램이 성장함에 따라 비용은 무시해도됩니다. – DevSolar

답변

6

C 및/또는 C++ 런타임을 정적으로 연결하면 크기가 크게 커질 수 있습니다. 또한 디버깅 정보를 포함하도록 프로그램을 컴파일하면 크기가 커질 수 있습니다.

2

디버그 정보가있는 것 같습니다. Visual Studio에서 릴리스 모드로 빌드하거나 Linux에서 strip 명령을 사용하여 제거하면 훨씬 작아집니다.

1

정적 인 앱에 연결하지 마세요. 동적으로 만들어보십시오.

+0

어떻게 동적으로 만들 수 있습니까? dev-cpp를 사용하고 있습니다. – user1449029

+0

죄송합니다.이 IDE를 모르겠습니다. 지금은 Google에 너무 가난한 모바일 연결이 있습니다. – rekire

1

이것은 정적 실행 파일, 즉 독립형으로 실행될 수 있고 런타임 라이브러리에 의존하지 않는 정적 실행 파일을 생성했기 때문에 가능합니다. 그것을 피하는 방법은 컴파일러/링커의 설명서를 참조하십시오.

편집 : 코드에서

내가 정적으로 링크 된 실행 파일에 대한 동적으로 링크 된 실행 파일 (리눅스에서 GCC 4.3.2)하지만 6.7MB에 대한 13,540 바이트를 얻을.

0

디버그 모드에서 빌드하면 어떤 식 으로든 최적화되지 않은 코드 (속도/크기)가 컴파일되고 링크되며 시스템 라이브러리의 디버그 버전이 포함 된 비 대한 실행 파일이 생깁니다.

릴리스 모드로 전환하면 컴파일러와 링커는 최종 exec에서 필요한 기능 만 사용하고 릴리스 버전도 사용하도록 최적화 할 수 있습니다. 그런 식으로 공간 최적화를 선택한 경우 '희망'을 가진 작은 임원이 될 것입니다.

+0

안녕하세요, 어떻게 해제 모드로 전환합니까? – user1449029

+0

Visual Studio를 사용하는 경우 IDE에서 Debug & Release 모드를 기본으로 선택하고 원하는 것을 선택하십시오. CLI를 통해 편집을 수행하는 경우 -g는 디버그 모드를위한 것이며, 생략은 릴리스 용입니다. gcc : http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html을 참조하십시오. – fduff

관련 문제