问题
What does the@GLIBC_2.2.5
do/mean with symbols inside glibc?
I'm attempting to build a package on a 64bit CLFS system. I'm getting unresolved symbol issues with multiple symbols linking against /lib64/libc-2.15.so, however, everything that is unresolved has a @GLIBC_2.2.5
suffix.
0000000000107910 T xdr_accepted_reply@GLIBC_2.2.5
0000000000112290 T xdr_array@GLIBC_2.2.5
0000000000109650 T xdr_authdes_cred@GLIBC_2.2.5
So it LOOKS like the xdr routines exist in libc-2.15 but I can't really use them. The symbols in my object files do not have that suffix. For example, an nm on the .o shows just 'xdr_accepted_reply'.
I would like to understand this first since I'm being led down a path of chasing replacement libraries otherwise. libtirpc to get the XDR routines and the some other library to get the missing crypto routines that tirpc needs.
回答1:
They look like Versioning Symbols for Shared Libraries (glibc)
As the content behind the link will point out, you can use:
objdump -x wrapper-linux-x86-32 //and possibly -64
To get a lot of information about the executable...
For example:
...
Version References:
required from libpthread.so.0:
0x0d696912 0x00 05 GLIBC_2.2
0x0d696911 0x00 04 GLIBC_2.1
0x0d696910 0x00 03 GLIBC_2.0
required from libc.so.6:
0x0d696913 0x00 08 GLIBC_2.3
0x0d696911 0x00 07 GLIBC_2.1
0x0d696912 0x00 06 GLIBC_2.2
0x0d696910 0x00 02 GLIBC_2.0
...
来源:https://stackoverflow.com/questions/23416442/what-does-the-glibc-2-2-5-suffix-on-symbols-do