@GLIBC_2.0 and @@GLIBC_2.1 suffixes
George Kraft
gk4@us.ibm.com
Tue Nov 9 10:13:00 GMT 1999
While trying to determine the APIs and libraries used by applications
such as StarOffice51 and WordPerfect8 I have stumbled across some
redundant APIs with @GLIBC_2.0 and @@GLIBC_2.1 suffixes on RedHat 6.0.
So, for example, if I look at Netscape Communicator 4.7 I see that
"fdopen" is undefined and needs to be resolved.
[gk4@act5 gk4]$ nm -D -g /usr/local/netscape/netscape | grep fdopen
U fdopen
Looking at what libraries are dynamically linked, I see libc.so.6 is
linked to netscape to resolve "fdopen".
[gk4@act5 gk4]$ ldd /usr/local/netscape/netscape
libBrokenLocale.so.1 => /lib/libBrokenLocale.so.1 (0x40018000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x4001a000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40064000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4006e000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40083000)
libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x40095000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x400a2000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x400ad000)
libdl.so.2 => /lib/libdl.so.2 (0x4014a000)
libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2
(0x4014d000)
libm.so.6 => /lib/libm.so.6 (0x40190000)
libc.so.6 => /lib/libc.so.6 (0x401ac000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
However, when I look in libc.so.6 I see two "fdopen" definitions with
either a @GLIBC_2.0 or @@GLIBC_2.1 suffix!
[gk4@act5 gk4]$ nm -g /lib/libc.so.6 | grep fdopen
00050ae0 T _IO_fdopen@@GLIBC_2.1
00053410 T _IO_fdopen@GLIBC_2.0
00050ae0 T fdopen@@GLIBC_2.1
00053410 T fdopen@GLIBC_2.0
How is "fdopen" being resolved? What is the purpose of the @GLIBC_2.0
or @@GLIBC_2.1 suffixes? How can I determine which one the application
wants? I want to know if the system has the prerequisite libraries for
my application to work...
Thanks,
George Kraft IV
gk4@us.ibm.com
More information about the Gcc-help
mailing list