Что означает адрес символа "T" = 0 на выходе нм - PullRequest
0 голосов
/ 14 июля 2020

У меня есть 2 библиотеки c stati, которые скомпилированы по-разному. На данный момент я не понимаю разницы.

Я просто хочу понять, что для одного и того же символа в одной библиотеке адрес символа равен 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

Какая будет разница, когда компоновщик будет использовать эти библиотеки для компоновки?

В моем случае, если я использую библиотеку works / libdriver.a, связь проходит успешно. Но когда я использую библиотеку not_works / libdriver.a, та же самая связь генерирует ошибки нескольких определений, и символ tls_cipher_setup является одним из многих, которые генерируют эту ошибку.

...