为什么最终的二进制文件的大小比静态库的大小要小得多呢?

这是一个iOS问题。

我构build了一个静态库(iOS中的框架 ),然后包含在一个应用程序中。 结果二进制(500kb)的大小小于静态库(6mb)的大小。 这个怎么用? 我对静态库的理解是静态库包含在最终的二进制文件中

因为你没有使用你的库的所有function。 归档types.a静态库是.o对象文件的集合,只有链接时包含程序中所需的对象文件。

每当你静态链接一个可执行文件时,链接器就可以继续并parsing所有的符号名称(即将它们映射到一个地址),因为现在知道的所有符号已经提供给链接器(以.o文件和.a真正只是.o文件集合的库)。 如果有不存在的名称,则会出现链接错误(与dynamic链接不同,您可以在运行时加载其他库)。 在你的情况下,你有额外的可执行文件未引用的符号。 由于链接器已知这些符号是未使用的,因此将它们从可执行输出中简单地删除。 因此,在这种情况下,您的可执行文件将比input库小。