2011-10-24 17 views
6

Pracuję nad S/W dla niektórych urządzeń, które korzystają z Linux O.S. Rozmiar używanych bibliotek (RAM/ROM) jest bardzo ważny.Zmierz rozmiar bibliotek w systemie Linux

Jak w prosty sposób obliczyć pamięć RAM/ROM wymaganą przez moje oprogramowanie? (w tym bibliotek, z których korzystałem). Myślę, że to zbyt łatwe pytanie dla doświadczonego programisty Linux.

+1

Jest to w rzeczywistości trudne pytanie. Jeśli twój program używa dynamicznej alokacji pamięci 'malloc' lub ma nietrywialne wzorce połączeń (szczególnie jeśli ma rekursję), to nawet teoretycznie nie jest możliwe przewidzenie ile RAM będzie potrzebne dla sterty/stosu. Istnieją analizatory, które działają dość dobrze przy określaniu wymagań dotyczących stosu typowych programów wbudowanych, ale często nie są tanie. – Gilles

Odpowiedz

3

Run

size <object> 

lub

size <archive> 

lub

size <shared-object> 

. (Lub „target-” wielkość w przypadku jesteś cross-kompilacji: ARM-rozmiar jeśli używasz arm-gcc)

To daje

text data  bss  dec  hex filename 

tabelę, w której tekst jest programowo size, bss zainicjalizowane globale i dane dane tylko do odczytu.

Chociaż odpowiada na twoje pytanie, prawdopodobnie będziesz chciał użyć określonego LdScript (gdy używasz ld jako łącznika), gdzie będziesz umieszczał sekcje w dostępnych pamięciach ręcznie podczas wykonywania końcowego linku.

+1

Należy zauważyć, że to narzędzie wyświetla tylko pamięć statyczną. Wykorzystanie pamięci czasu działania będzie większe. O ile większe zależy od programu i jego zastosowania, stosu i sterty. –

+0

Można również użyć "ldd" do sprawdzenia bibliotek współdzielonych. Z "ldd" i "size", mogę zgadnąć, ile pamięci ROM/RAM, w tym bibliotek. – Wonil

Powiązane problemy