Muszę poważnie zoptymalizować rozmiar mojego pliku wykonywalnego ( ARMprogramowanie) i zauważyłem, że w moim obecnym schemacie kompilacji ( gcc+ ld) nieużywane symbole nie są usuwane.
Użycie arm-strip --strip-unneededdla wynikowych plików wykonywalnych / bibliotek nie zmienia rozmiaru wyjściowego pliku wykonywalnego (nie mam pojęcia dlaczego, może po prostu nie może) .
Jaki byłby sposób (jeśli istnieje) zmodyfikowania potoku budowania, tak aby nieużywane symbole zostały usunięte z pliku wynikowego?
Ja nawet nie myśleć o tym, ale mój obecny osadzony środowisko nie jest bardzo „mocny” i oszczędność nawet 500Kz 2Mwynikami w bardzo ładnym wzrost wydajności załadunku.
Aktualizacja:
Niestety obecna gccwersja, której używam, nie ma takiej -dead-stripopcji, a -ffunction-sections... + --gc-sectionsfor ldnie daje żadnej znaczącej różnicy w wynikowym wyniku.
Jestem zszokowany, że stało się to nawet problemem, ponieważ byłem pewien, że gcc + ldpowinno to automatycznie usunąć nieużywane symbole (dlaczego w ogóle muszą je zachować?).
boostbibliotek, .exeplik wynikowy zawiera wiele nieużywanych plików obiektowych i ze względu na specyfikacje mojego obecnego osadzonego środowiska wykonawczego uruchomienie 10mbaplikacji trwa znacznie dłużej niż na przykład uruchomienie 500kaplikacji.