warum mein C++ - Ausgabe-executable ist so groß,?

Ich habe ein ganz einfaches C++ - Projekt, die verwendet boost::regex-Bibliothek. Die Ausgabe, die ich bekommen hab, ist 3,5 Mb groß. So wie ich das verstehe, ich bin statisch gelinkt werden alle boost .CPP-Dateien, einschließlich aller Funktionen/Methoden. Vielleicht ist es möglich irgendwie anweisen, mein linker verwenden Sie nur notwendige Elemente, die von boost, nicht alle von Ihnen? Danke.

$ c++ version
i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5659)

Dies ist, was size sagt:

$ size a.out
__TEXT  __DATA  __OBJC  others  dec hex
1556480 69632   0   4296504912  4298131024  100304650

Versuchte ich strip:

$ ls -al
...  3946688 May 21 13:20 a.out
$ strip a.out
$ ls -al
...  3847248 May 21 13:20 a.out

ps. Dies ist, wie mein code organisiert ist (vielleicht ist das die Hauptursache des Problems):

//file MyClass.h
class MyClass {
  void f();
};
#include "MyClassImpl.h"

//file MyClassImpl.h
void MyClass::f() {
  //implementation...
}

//file main.cpp
#include "MyClass.h"
int main(int ac, char** av) {
  MyClass c;
  c.f();
}

Was denkst du?

  • Vielleicht sind Sie Gebäude mit debugging-Informationen eingefügt, die in der ausführbaren Datei. Versuchen Sie, bauen Sie mit aktivierter Optimierung.
  • Sind Sie kompilieren mit Optimierungen?
  • Ich bin mit dem flag -O3
  • Welchen compiler/linker benutzt du, und welches Betriebssystem?
  • Da es ein relativ einfaches Projekt, vielleicht könnten Sie Kochen es nach unten, um einige Beispiel-code, der kompiliert viel größer als Sie möchten/erwarten? Würde den Menschen helfen hier herauszufinden, was Los ist.
  • Ich habe gerade eine kurze Erklärung, meine code-Struktur. Vielleicht wird dies helfen. Dank
  • Sorry, ich wollte sagen, einige code, der beispielhaft für den boost und stl template-Nutzung. Der code, den Sie geschrieben ist nicht hilfreich in dieser Hinsicht. Wenn die include-Struktur scheint ein wenig ungewöhnlich, aber dies könnte dazu führen, mehrere symbol definition Fehler, anstatt aufblasen...

InformationsquelleAutor yegor256 | 2010-05-15
Schreibe einen Kommentar