[CentOS] How is this possible?

Sun May 25 20:12:30 UTC 2008
MHR <mhullrich at gmail.com>

As an experiment, I am attempting to build a more recent version of
GNOME than 2.16.0 on CentOS 5.1.  I've tried both garnome and jhbuild,
and neither one works quite right.  Jhbuild blows out looking for a
dbus-glib-1 revision >= 0/74 (the release rev is 0.70), so I
downloaded that and tried to build it.  This results in the following

gcc -g -O2 -Wall -Wchar-subscripts -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align
-Wfloat-equal -Wsign-compare -o .libs/dbus-binding-tool
dbus-binding-tool-glib.o dbus-glib-tool.o  ./.libs/libdbus-gtool.a
-L/lib64 ./.libs/libdbus-glib-1.so -ldbus-1 -lgobject-2.0 -lglib-2.0
/usr/lib/libexpat.so -lnsl
/usr/lib/libexpat.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[4]: *** [dbus-binding-tool] Error 1
make[4]: Leaving directory `/home/mhr/Download/dbus-glib-0.74/dbus'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/mhr/Download/dbus-glib-0.74/dbus'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/mhr/Download/dbus-glib-0.74/dbus'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/mhr/Download/dbus-glib-0.74'
make: *** [all] Error 2

When I try to use garnome, it eventually runs into exactly the same error.

I've checked /usr/lib/libexpat.so, and this is what I get:

$ ls -l /usr/lib/libexpat.so
lrwxrwxrwx 1 root root 27 Jan  8 13:11 /usr/lib/libexpat.so ->
$ ls -l /lib/libexpat.so.0.5.0
-rwxr-xr-x 1 root root 133056 Jan  6  2007 /lib/libexpat.so.0.5.0
$ file /lib/libexpat.so.0.5.0
/lib/libexpat.so.0.5.0: ELF 32-bit LSB shared object, Intel 80386,
version 1 (SYSV), stripped

When I look at this library with nm, lld and objdump, they all seem to
be able to read it just fine.  There is also the 64 bit version that
lives in /ib64 and has a .ink from /usr/lib64, and that also reads

What did I miss here?