这些符号名称中的“ @符号”是什么意思?

时间:2019-05-23 18:07:55

标签: linker-errors elf

我正在调试对以下符号的未定义引用(elf amd64的东西)

//usr/lib/x86_64-linux-gnu/libSM.so.6: undefined reference to `uuid_generate@UUID_1.0'

所以我在该文件中grep并找到了相同的符号,但是还有另一个“ at sign”

(pyws) STRM ~/.../etc/conda/activate.d  $ readelf -s  /lib/x86_64-linux-gnu/libuuid.so.1 | grep uuid_generate
67: 0000000000002370   135 FUNC    GLOBAL DEFAULT   13 uuid_generate@@UUID_1.0

所以我的问题是:

1)符号名中的@符号是什么意思?

2)uuid_generate@@UUID_1.0uuid_generate@UUID_1.0之间有什么区别

1 个答案:

答案 0 :(得分:1)

由@JohnBollinger链接的页面中的文档提供了答案:

https://akkadia.org/drepper/dsohowto.pdf

  

使用@@定义的符号是默认定义。那里   最多只能是一个。它是所用符号的版本   在所有涉及DSO的链接程序运行中。未定义符号   链接器曾经考虑过使用@。这些是   兼容性符号仅由   动态链接器