一.强符号和弱符号 在C语言中,如果多个模块定义同名全局符号时,链接器认为函数和已初始化的全局变量(包括显示初始化为0)是强符号,未初始化的全局变量是弱符号. 根据这个定义,Linux链接器使用下面的规则来处理多重定义的符号名: 1.不允许有多个同名的强符号 2.如果有一个强符号和多个弱符号同名,那么选择强符号 3.如果有多个弱符号同名,有些编译器从这些弱符号中任意选择一个,有些编译器选择占用内存最大的那个符号 符号链接原理:链接器发现同时存在弱符号和强符号,优先选择强符号,如果发现不存在强符号…