C语言链接器解析多重定义的全局符号

  • 链接器的输入是一组可重定位目标模块。每个模块定义一组符号,有些是局部的(对定义该符号的模块可见),有些是全局的(对其他模块也可见)。如果多个模块定义同名的全局符号,则Linux会采用如下办法处理。
  • 函数和已初始化的全局变量是强符号,未初始化的全局变量是弱符号。
  1. 不允许有多个同名的强符号。
  2. 如果有一个强符号和多个弱符号同名,则选择强符号。
  3. 如果有多个弱符号同名,那么从这些弱符号中任意选择一个。
posted @ 2018-08-06 23:48  沉迷安卓开发的电子工程师  阅读(296)  评论(0编辑  收藏  举报