리눅스에서 공유 라이브러리에 대한 'nm'명령의 출력을보고 있습니다. 나는 이것을 본다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와 같은 라이브러리에는 동일한 심볼의 여러 버전이 포함될 수 있습니다. –
Ulrich Drepper의 [this] (https://www.akkadia.org/drepper/dsohowto.pdf)의 3 절이 더 자세하게 설명되어 있습니다. –
Thanks @ n.m. 브렛 헤일. 나는 그 종이를 지나갈 것이다. –