编译器进行一系列步骤,生成.s文件
Windows的PE (PE-COFF),.obj格式
Linux的ELF,.o格式
Unix的a.out格式
来自链接器定义的符号规则
默认强符号包括函数名和已初始化的全局变量
默认弱符号包括未初始化的全局变量
不允许强符号被多次定义,多次定义就会multiple definition of 'xxx'
具体决策规则
编译阶段如果弱引用没有找到定义,链接器不会报错,而是默认其是一个特殊的值,其它处理与强引用基本一致
静态链接
动态链接
运行时链接
合法程序不流行,但恶意代码常用
可执行程序在运行中,只有当需要使用函数时,才链接到库
Windows API提供的运行时链接相关接口
缺点
优点