这是一个iOS问题。
我构建了一个静态库(iOS中的框架),然后将其包含在应用程序中。结果二进制(500kb)的大小小于静态库(6mb)的大小。这是如何运作的?我对静态库的理解是静态库包含在最终的二进制文件中
答案 0 :(得分:24)
因为您没有使用库的所有功能。归档类型.a
的静态库是.o
目标文件的集合,并且链接时仅包含程序中所需的目标文件。
答案 1 :(得分:3)
每当您静态链接可执行文件时,链接器可以继续并解析所有符号名称(即将它们映射到地址),因为 all 它将知道您现在已经提供给链接器的符号(以.o
个文件和.a
个库的形式,它们实际上只是.o
个文件的集合。如果有不存在的名称,则会出现链接错误(这与动态链接不同,您可以在运行时加载另一个库)。在您的情况下,您有可执行文件未引用的额外符号。由于链接器将这些符号称为未使用,因此只需从可执行输出中删除它们。因此,在这种情况下,您的可执行文件将小于输入库。