elf文件中静态变量的名称字段

问题描述

我只是对静态变量的名称字段感到好奇。我有这个代码

int main ()
{
 static uint8_t var_1[10] = {1};
 static uitn8_t var_2[10] = {0};
  
return 1;
}

如果我使用readelf -a foo | grep var_2,则会看到以下内容

38: 0000601058  10  OBJECT  LOCAL  DEFAULT  26  var_2.2482

我想知道.2482是什么,它是变量的某种排序索引。我也在用gcc。谢谢

解决方法

编译器,链接器,目标文件,调试器等使用一种广泛称为"name mangling"的概念来确保程序中使用的标识符是唯一的,并在内部对其进行区分-因为编程语言可能允许使用相同的名称在几个地方的标识符。 “名称处理”并不是真正的标准化,但是每种工具都倾向于使用自己的名称处理方案。