链接过程生成可执行代码
链接分为:静态链接、动态链接
静态链接:由链接器在链接时将库的内容加入到可执行程序中
静态链接的特点:
- 优点:对运行环境的依赖性较小,具有较好兼容性
- 缺点:生成的程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间,库函数若更新必须重新编译应用程序
静态链接:链接器在链接时仅仅建立与所需库函数的链接关系,在程序运行时才将所需资源调入可执行程序
动态链接的特点:
- 优点:在需要的时候才会调入对应的资源函数,简化程序的升级;有着较小的程序体积,实现进程之间的资源共享(避免重复拷贝)
- 缺点:依赖动态库,不能独立运行,动态库依赖版本问题严重
总结:
- 静态库在编译期加载库文件
- 动态库在运行期加载库文件
- 静态库的原则是以空间换时间,增加程序体积,减少运行时间
- 动态库的原则是以时间换空间,增加运行时间,减少程序体积
静态编译加-static
动态编译不用加参数
如何制作静态链接库?
-
制作
gcc -c mylib.c -o mylib.o # 编译目标文件
ar rc libtestlib.a mylib.o # 制作静态库