在nm命令的输出中,“@@”符号是什么意思?

我在Linux中查看共享库的'nm'命令的输出。 我看到这个

U stderr@@GLIBC_2.0 

这是否意味着stderr是硬链接glibc2.0? 我问这个问题的原因是,我们有一套库(比如说a1.so,a2.so,…),它们是针对我们导出库的不同版本之一构build的(比如说ex.so.1, ex.so.2)。 导出的库都会导出一个函数,比如说foo。 当加载a * .so库时,它们会以某种方式神奇地将相应的函数修补到它们所针对的库中。 我看到nm的输出,像下面的不同库。

 nm a1.so | grep foo U foo@@ex.1 nm a2.so | grep foo U foo@@ex.2 

“@@”在这里扮演什么angular色? 我找不到任何关于“@@”的文档。 任何参考将是有帮助的。

@允许指定一个符号的版本。 当符号的多个定义存在时,它们将具有不同的版本。 要指示默认版本,请使用@@ 。 如果未指定明确的版本,则选择默认版本。

更多细节可以在binutils VERSION文档中找到 (搜索“ @@ ”)。