2011-10-24 42 views
6

Tôi đang phát triển S/W cho một số thiết bị sử dụng Linux O.S. Vì vậy, kích thước của thư viện (RAM/ROM) mà tôi sử dụng là rất quan trọng.Đo kích thước thư viện trong Linux

Tôi có thể dễ dàng tính toán RAM/ROM theo yêu cầu của phần mềm của mình bằng cách nào? (bao gồm cả thư viện tôi đã sử dụng). Tôi nghĩ rằng đó là câu hỏi quá dễ dàng đối với nhà phát triển Linux có kinh nghiệm.

+1

Đây thực tế là một câu hỏi khó. Nếu chương trình của bạn sử dụng phân bổ bộ nhớ động 'malloc' hoặc có kiểu gọi nontrivial (đặc biệt nếu nó có đệ quy), thậm chí không thể lý thuyết để dự đoán bao nhiêu RAM sẽ cần cho heap/stack. Có các máy phân tích hoạt động khá tốt trong việc xác định yêu cầu ngăn xếp cho các chương trình nhúng điển hình, nhưng chúng thường không rẻ. – Gilles

Trả lời

3

Run

size <object> 

hoặc

size <archive> 

hoặc

size <shared-object> 

. (Hoặc "target-" kích thước trong trường hợp bạn đang cross-biên dịch: cánh tay kích thước nếu bạn đang sử dụng cánh tay-gcc)

Nó sẽ cung cấp cho bạn một bảng

text data  bss  dec  hex filename 

nơi văn bản là theo chương trình kích thước, bss globals được khởi tạo và dữ liệu chỉ đọc dữ liệu.

Trong khi điều này trả lời câu hỏi của bạn, có thể bạn sẽ muốn sử dụng LdScript cụ thể (khi sử dụng ld làm trình liên kết), nơi bạn sẽ đặt các phần vào bộ nhớ sẵn có theo cách thủ công khi thực hiện liên kết cuối cùng.

+1

Lưu ý rằng công cụ này chỉ hiển thị bộ nhớ tĩnh. Việc sử dụng bộ nhớ thời gian chạy sẽ lớn hơn. Làm thế nào lớn hơn nhiều phụ thuộc vào chương trình và nó sử dụng ngăn xếp và đống. –

+0

Cũng có thể sử dụng "ldd" để kiểm tra các thư viện được chia sẻ. Với "ldd" và "size", tôi có thể đoán số lượng ROM/RAM được sử dụng bao gồm cả thư viện. – Wonil

Các vấn đề liên quan