Pracuję nad procesorem wbudowanym, więc rozmiar binarny ma duże znaczenie. Próbuję unikać używania standardowej biblioteki. Chciałbym jednak użyć funkcji std ::. Wyodrębniłem "function.hpp" z boost i próbuję go użyć, ale po prostu włączając function.hpp zwiększa rozmiar mojego binarnego 200k, co czyni go większym, niż mój procesor może zaakceptować. Jeśli dołączę standardową bibliotekę, zwiększy ona tylko mój binarny 60k. Nie mogę tego rozgryźć, jeśli nie korzystam jeszcze z żadnego z szablonów, nie powinno być żadnych kosztów ogólnych. A nawet jeśli to zrobię, nie mogę sobie wyobrazić, że jest wart 200k kodu. Używam gcc 4.7 i wyłączyłem informacje o debugowaniu z tego, co mogę powiedzieć "-g0" i włączyłem optymalizacje "-O2".W tym boost function.hpp, bez użycia go, zwiększa rozmiar mojego pliku binarnego o 200k. Czemu?
Każda pomoc będzie mile widziana.
Optymalizuj więcej za pomocą '-O3'? (lub '-Os' dla rozmiaru) – Cornstalks
@Cornstalks To jest właśnie niewłaściwa rzecz do zrobienia. '-O3' włącza optymalizacje, które mogą * zwiększyć * rozmiar binarny. Tak czy siak, nie sądzę, że jest to związane z optymalizacją, uważam, że włączenie nagłówka doładowania powoduje, że kompilator wciąga obsługę wyjątku do twojego programu, podczas gdy nie używasz go w inny sposób. Do którego systemu/procesora się kompilujesz? – us2012
'-Os' goli kilka kb, (dzięki za wskazówkę), ale nie na tyle, aby mieć znaczenie. Kompilując bez wyjątków, '-fno-exceptions' zmienia rozmiar 5k i dodając obsługę wyjątków, dodaje 5k wstecz. Wciąż nie ma sensu. Kompiluję dla ARM Cortex m3. Inną dziwną rzeczą jest to, że mogę używać funkcji std :: ze standardowej biblioteki, faktycznie używać jej w kodzie, a nie tylko dodawać ją i dodaje tylko 60k. Postrzegasz, że skompilowałbyś się w tej samej obsłudze wyjątków, która byłaby taka. –