首页 > 解决方案 > 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。谢谢

标签: cgccstatic

解决方案


编译器、链接器、目标文件、调试器等利用广为人知的“名称修饰”概念来确保程序中使用的标识符是唯一的并在内部区分它们 - 因为编程语言可能允许在多个标识符中使用相同的名称地方。“名称修饰”并不是真正标准化的,但每个工具都倾向于使用自己的名称修饰方案。


推荐阅读