Cocoa Touch静态库与DLL动态库之间的二进制图像代码大小比较

时间:2011-03-18 02:29:43

标签: c++ objective-c ios size

我正在使用静态库(.a)将C ++动态DLL库从Windows操作系统迁移到iOS。 并且出现了关于二进制图像大小的一些问题。 以下是我得到的一些数据。

图像大小:

动态库(在Windows操作系统中编译的DLL):1.4M

静态库(.a,符合Touch Static Library):34M。

我检查了'Obj'和'o'之间的每个编译的C ++源文件。它们的大小几乎相同。但是,在将它们链接在一起之后,DLL的大小为1.4M,而'.a'图像大小为34M。看起来'.a'的图像大小接近所有的总和。 '.o'文件。

是否有任何关于将C ++代码迁移到iOS的建议和指南?,尤其是图像大小。

在Cocoa Touch Static Library项目中是否有用于编译C ++源代码的链接标志?

1 个答案:

答案 0 :(得分:1)

在基于Unix的系统(包括iOS)中,“。a”文件只是一个归档(man 5 ar),它将一堆“.o”文件组合在一个单元中(可能包含一个符号表)。因此,您观察“.a”文件的大小是“.o”文件的总和是完全正确的。

当您将应用程序与“.a”文件链接时,最终的可执行文件将仅包含实际引用的“.a”文件的元素。