链接器符号处理规则
全局符号分两种
强符号
- 函数
- 初始化的全局变量
弱符号
- 未初始化的全局变量

规则一:不允许多个同名强符号
规则二:一个强符号和多个弱符号同名,选强(有强选强)
- 对于弱符号的引用被解析为强符号,也就是把那些弱符号当做那个唯一的强符号使用
规则三:有多个弱符号,选择任意一个
gcc -fno-common使多重定义弱符号链接时报错gcc -Werror警告变为错误,终止链接
两个同名弱符号,由不同的编译器来编译会采用不同的排列规则

对于全局变量
- 能不用就不用
- 如果要用
- 用 static 定义在内部
- 或者定义的时候初始化
- 使用 extern 声明为引用的外部全局符号