目标文件是由源代码编译而成的②进制文件
源代码是供开发者阅读的文本文件它的体积大,而且本质上都是文本无法直接被机器使用,所以需要先编译为目标文件
一個源代码文件经过编译就会对应生成一个目标文件
供主程序代码调用的库文件,在编译时静态链接库里面的功能都会被打包到主程序裏,成为主程序的一部分
供主程序调用需要跟随主程序一起发布,到运行时才会被动态调用
能够被操作系统调用直接启动一个应用进程的文件
静态链接库,动态链接库和可执行文件都是由目标文件链接而来,只是设计用途不一样
静态链接库和动态链接库的特征对比
- 静態库会被编译进主程序不用担心库丢失的问题,适合到处拷贝独立运行不依赖于外部环境,独立性差的女生强
- 但由于静态库的方式将所有的库代码都打包到主程序里面了主程序体积就会增大
- 动态库的共享性强,比如Windows系统中的dll文件可以被任意程序调用
- 由于Windows中的dll文件是囲享的,其它程序就无需再包含了因此动态库的方式有利于减小主程序体积
- 动态库的缺点同样明显,它依赖于外部环境比如Windows系统中常見的dll丢失的问题,每个机子环境是不一样到其它机子上可能就无法正常运行了
- 如果程序想要做成便携式,一个主程序可以到处直接运行嘚适合静态库模式
- 如果希望程序模块可以动态升级的,适合动态库模式只要替换对应模块的dll文件,就可以实现升级其它文件都无需替换,主程序也不需要重启
在Windows中目标文件为.obj格式,静态链接库为.lib格式动态链接库为.dll格式,可执行文件为.exe格式
在Linux中目标文件为.o格式,靜态链接库为.a格式动态链接库为.so格式,可执行文件有.rpm等多种格式