提问人:Chethan Ravindranath 提问时间:9/15/2016 更新时间:2/12/2023 访问量:1946
nm 命令输出中的“@@”符号是什么意思?
What does the '@@' symbol mean in the output of nm command?
问:
我正在查看 Linux 中共享库的“nm”命令的输出。我看到这个了
U stderr@@GLIBC_2.0
这是否意味着 stderr 是硬链接的 glibc2.0?我之所以这么问,是因为我们有一组库(比如说 a1.so、a2.so 等),它们是针对我们导出的库的不同版本之一(比如 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
“@@”在这里扮演什么角色?我找不到任何关于“@@”的文档。任何参考资料都会有所帮助。
答:
4赞
Sander De Dycker
9/15/2016
#1
允许指定符号的版本。当一个符号存在多个定义时,它们将具有不同的版本。为了指示默认版本,使用。如果未指定显式版本,则选择默认版本。@
@@
更多细节可以在 binutils VERSION 文档中找到(搜索 “”)。@@
评论