2010-04-24 29 views
5

Tôi có một cây dự án trong Xcode trông giống như sau: AppProject phụ thuộc vào ObjcWrapper mà lần lượt phụ thuộc vào PureCppLib. ObjcWrapper và PureCppLib là các dự án thư viện tĩnh. Kết hợp, tất cả các nguồn hầu như không đạt đến 15k dòng mã, và, như mong đợi, kích thước của kết quả nhị phân là khoảng 750Kb trong chế độ phát hành và hơi hơn 1Mb trong chế độ gỡ lỗi. Càng xa càng tốt.Kích thước của các thư viện tĩnh được tạo bởi Xcode

Tuy nhiên, ObjcWraper.a và PureCppLib.a vượt quá 6Mb ở mỗi chế độ. Vì vậy, câu hỏi đầu tiên là tại sao nó là như vậy. Nhưng quan trọng hơn, làm cách nào tôi có thể đảm bảo rằng các lib tĩnh đó không bao gồm các phần hoặc tất cả mã nguồn?

Cảm ơn trước!

+0

Tra cứu 'xóa mã chết'. Theo kinh nghiệm của tôi, trình tối ưu hóa trình biên dịch (chế độ phát hành) sẽ không bao gồm mã từ các thư viện không được ứng dụng của bạn tham chiếu. Tôi không ở một nơi để làm googling cho bạn, do đó, cho rằng một thử đầu tiên. Tôi sẽ trả lời một lần nữa khi tôi được đặt tốt hơn. – gnasher

+0

Kenny, Mã chết dường như không phải là vấn đề ở đây. Thư viện mà tôi gọi là PureCppLib, kèm theo trình bao bọc thích hợp, biên dịch thành 500-900Kb khi giành chiến thắng, giành chiến thắng trên điện thoại di động, macosx và android ndk nếu biên dịch thành lib động (nghĩa là thậm chí hầu hết mã chết đều được liên kết). Nhưng trên thư viện động của iPhone không được phép, vì vậy tôi cần phân phối một lib tĩnh - và 6Mb không nhìn đúng. – user325014

+0

@ shaft80: libs động có thể có đoạn mã chết (và sẽ có mã chết rất hung hãn với một số liên kết nếu tệp biểu tượng đã xuất được sử dụng, ví dụ); điều này chắc chắn có thể là vấn đề. –

Trả lời

10

Bạn có thể muốn xây dựng thư viện tĩnh của mình mà không cần biểu tượng gỡ lỗi. Tìm cài đặt tạo "Tạo các biểu tượng gỡ lỗi" cho mục tiêu thư viện tĩnh trong Cấu hình bạn phân phối và đảm bảo rằng nó không được chọn.

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