Я смотрю вывод команды «nm» для общей библиотеки в Linux. Я вижу этоЧто означает символ «@@» на выходе команды nm?
U [email protected]@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 [email protected]@ex.1
nm a2.so | grep foo
U [email protected]@ex.2
Какую роль играет здесь '@@'? Я не мог найти документацию о «@@». Любые ссылки были бы полезными.
Это символьная версия. Библиотека, подобная glibc, может содержать несколько версий одного и того же символа. –
Статья 3 этого [https://www.akkadia.org/drepper/dsohowto.pdf) статьи Ульриха Дреппера более подробно освещена. –
Спасибо @ н.м. и Бретт Хейл. Я просмотрю газету. –