可执行文件
源代码是如何编译成可执行文件的呢?我们可以通过clang -ccc-print-phase main.m
命令查看
可见将程序编译成可执行文件的步骤:
源代码 --> 预处理器 --> 编译器 --> 汇编 --> 机器码 --> 链接 --> 可执行文件
静态库和动态库的区别
库:库就是写好的、现有的、成熟的程序代码的集合。
静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用,节省内存。
图解
静态库的制作
静态库主要有两种形式:.a 和 .framework
动态库的形式主要有:.tdb 、.dylib、.framework 前两种还没见过,最常见的就是.framework的动态库
静态库制作方式请看:https://www.jianshu.com/p/5218d0ea26c9
注意:swift不支持静态库,只支持动态库