2016-06-10 2 views
2

Ich habe eine C++ - Windows-Anwendung, die STL, Boost und mehrere andere Bibliotheken verwendet. Anwendung tut nicht viel, hat aber eine große Größe. Ich muss einen Weg finden, um die Größe der App zu reduzieren, aber ich verstehe nicht, welcher Teil dieser Bibliotheken die Größe meiner App sprengt.Wie finde ich den Code, der die Größe meiner Anwendung sprengt?

(Vielleicht kann ich STL/Boost-Schalter, oder implementieren smth von mir wollen, oder smth durch eine andere Art und Weise, etc ...)

Hat man keine Werkzeuge/Führungen importierten Symbole zu untersuchen und herauszufinden, Welches ist der größte Wert für die App?

UPDATE

ich über Release-Build bin gefragt.

Ich frage nicht über die Konfiguration des Compilers, aber ich frage nach dem Tool, das sagen wird, welche Teile meines Codes den größten Anstieg der Größe meiner App geben.

Alle Bibliotheken statisch enthalten. Daher, wenn ich schwergewichtige Abhängigkeiten entfernen könnte, wird die Größe der App wesentlich kleiner sein.

+2

Unter Unix 'nm' ein nützliches Werkzeug ist https://en.wikipedia.org/wiki/Nm_(Unix) –

+0

@ChrisBeck Danke. Ich werde 'nm' versuchen, wenn ich smth für Windows nicht finde ... –

+0

Boost könnte groß sein: http://stackoverflow.com/questions/2839172/why-my-c-output-executable-is-so- groß – Drakosha

Antwort

-1

Sie suchen Debug-Build? Das könnte größer sein. Was ist mit strip auf der ausführbaren Datei?

+0

Nein, ich frage nach Release Build –

+0

Wie wäre es mit Strip, hilft das: http: // Stackoverflow.com/fragen/1540523/strip-executable? – Drakosha

+2

'Strip' entfernt Symbolinformationen, die für Debugging-Zwecke verwendet werden. Unter Windows (VS2015) Debugging-Informationen, die nicht im Release-Build enthalten sind. –

1

Boost ist große Bibliothek. Wenn Sie Boost benötigen, benötigen Sie kein STL.

Wenn STL für Ihre Bedürfnisse ausreicht, können Sie nur STL verwenden.

Auch ich denke, Sie können Visual Studio konfigurieren, um die Spur des Verknüpfungsprozesses an die Ausgabe zu drucken.

Einige Ideen für Libs Inspektion sind hier:

How to See the Contents of Windows library (*.lib)

Tools for inspecting .lib files?

+0

Ok. Zum Beispiel brauche ich boost.thread. Ich kann Flag '/ VERBOSE: LIB' verwenden und sehe, dass meine App gegen diese lib verlinkt ist. Aber ich kenne keine Liste der aus der lib importierten Methoden. Und ich weiß nicht, wie groß die Methoden sind ... –

+0

@VictorMezrin Ich habe einige hilfreiche Links von stackoverflow hinzugefügt. – sg7

Verwandte Themen