我正在调试对以下符号的未定义引用(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.0
和uuid_generate@UUID_1.0
之间有什么区别
答案 0 :(得分:1)
由@JohnBollinger链接的页面中的文档提供了答案:
https://akkadia.org/drepper/dsohowto.pdf
使用@@定义的符号是默认定义。那里 最多只能是一个。它是所用符号的版本 在所有涉及DSO的链接程序运行中。未定义符号 链接器曾经考虑过使用@。这些是 兼容性符号仅由 动态链接器