2012-07-12 12 views
7

ich ein Bibliotheksprojekt habe, hatte ich schon immer „Strip Debug Symbols“ wandte sich für die Freigabe ON bautXCode LLVM + GCC 4.2 - Generieren Debug-Symbole

ich vor kurzem die „Generate Debug Symbols“ Flagge bemerkt. Wenn ich "Generate Debug Symbols" -Flag auf NEIN einstelle, dann schrumpft meine Bibliotheksgröße um 30%.

Ist dies eine vernünftige Optimierung für Release-Builds?

Was ist der Unterschied zwischen „Streifen Debug-Symbole“ und „generieren Debug-Symbole“ Option, im Idealfall, wenn ich Debug-Symbole Streifen werden nicht alle erzeugten Debug-Symbole verschwinden? Warum sehe ich diesen Unterschied?

Auch was andere Optimierungen außer -Os (schnellste, kleinste) kann ich machen, um die binäre Größe zu reduzieren?

Wie funktioniert "Strip Linked Product"?

+0

Ich habe ein ziemlich gutes Verständnis von diesem Link, aber ich würde immer noch jemanden lieben, um dies zu erklären .. http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference /build_setting_ref.html – Santthosh

Antwort

2

die Reduktion der binären Dateigröße anbetrifft, das ist, wie meine Release-Konfigurationsdatei wie in Bezug auf das Abstreifen der binären aussieht und ich denke, das ist, wie die meisten Entwickler tun es:

DEPLOYMENT_POSTPROCESSING = YES 
COPY_PHASE_STRIP = NO (not necessary since my copied binaries are already stripped and codesigned) 
STRIP_INSTALLED_PRODUCT = YES 
STRIP_STYLE = all 
SEPARATE_STRIP = YES 
DEAD_CODE_STRIPPING = YES 
GCC_GENERATE_DEBUGGING_SYMBOLS = NO 

Mit diesen Einstellungen bauen, Xcode scheint dasselbe zu tun, als würde man manuell "strip" auf der Binärdatei ausführen, zumindest was die Dateigröße sagt.

Ich habe noch keine andere Möglichkeit gefunden, die binäre Größe noch mehr zu reduzieren. Beachten Sie das Flag "DEPLOYMENT_POSTPROCESSING" dort - die binäre Größe wird viel größer ohne es und zum Beispiel alle C-Funktionen werden nicht entfernt werden.

+0

Beantwortet die Frage nicht vollständig. Was ist der Unterschied zwischen "Debug-Symbole entfernen" und "Debug-Symbole generieren"? Von ihren Namen klingen sie, als würden sie sich widersprechen. Typischer Xcode-Unsinn imo. – Ash

Verwandte Themen