2010-04-24 14 views
5

Mam drzewo projektu w Xcode, które wygląda tak: AppProject zależy od ObjcWrapper, który z kolei zależy od PureCppLib. ObjcWrapper i PureCppLib to statyczne projekty biblioteczne. Łącznie wszystkie źródła ledwo osiągają 15 000 linii kodu i, zgodnie z oczekiwaniami, rozmiar wynikowego pliku binarnego wynosi około 750 KB w trybie zwolnienia i nieco ponad 1 MB w trybie debugowania. Jak na razie dobrze.Rozmiar statycznych bibliotek generowanych przez Xcode

Jednak ObjcWraper.a i PureCppLib.a mają po 6 MB w każdym z trybów. Pierwsze pytanie brzmi: dlaczego tak jest. Ale co ważniejsze, jak mogę się upewnić, że te statyczne biblioteki nie zawierają części lub całego kodu źródłowego?

Z góry dziękuję!

+0

Sprawdź "pozbywanie się martwego kodu". Z mojego doświadczenia wynika, że ​​optymalizator kompilatora (tryb wydania) nie będzie zawierał kodu z bibliotek, do których nie odwołuje się twoja aplikacja. Nie jestem w miejscu, żeby zrobić dla ciebie wyszukiwanie w Google, więc spróbuj najpierw. Odpowiem jeszcze raz, gdy będę lepiej sytuowana. – gnasher

+0

Kenny, Martwy kod nie wydaje się być tutaj problemem. Biblioteka, którą nazwałem PureCppLib, wraz z odpowiednimi opakowaniami, kompiluje się do 500-900Kb przy wygranej, wygrywa mobilną, macosx i android ndk przy kompilacji do dynamicznej biblioteki (co oznacza, że ​​nawet większość martwego kodu zostanie połączona). Jednak biblioteki dynamiczne iPhone'a są niedozwolone, więc muszę rozładować statyczną bibliotekę - a 6Mb po prostu nie wygląda dobrze. – user325014

+0

@ shaft80: dynamiczne biblioteki mogą mieć rozmyślne usuwanie kodu (i będą miały bardzo agresywne usuwanie z niektórych łączników, jeśli zostanie użyty wyeksportowany plik symboli); to z pewnością może być problemem. –

Odpowiedz

10

Prawdopodobnie chcesz zbudować swoją bibliotekę statyczną bez symboli debugowania. Znajdź ustawienie kompilacji "Wygeneruj symbole debugowania" dla docelowej biblioteki statycznej w dystrybuowanej konfiguracji i upewnij się, że nie jest zaznaczone.

Powiązane problemy