nm输出中“T”符号地址=0是什么意思

use*_*295 5 multiple-definition-error nm

我有 2 个静态库,它们的编译方式不同。在这一点上,我不明白其中的区别。

我只是想了解,对于一个库中的相同符号,该符号的地址是 0。而在另一个库中则不同于零。这是什么意思?

$ nm works/libdriver.a | grep mbedtls_cipher_setup
0000000000000487 T tls_cipher_setup

$ nm not_works/libdriver.a | grep mbedtls_cipher_setup
0000000000000000 T tls_cipher_setup
Run Code Online (Sandbox Code Playgroud)

当链接器使用这些库进行链接时会有什么区别?

就我而言,如果我使用works/libdriver.a库,链接就会成功通过。但是,当我使用 not_works/libdriver.a 库时,相同的链接会生成多重定义错误,而符号 tls_cipher_setup 是生成此错误的众多错误之一。