SOLVED! Re: how to add a new glibc symbol ?

Roger Oberholtzer roger
Mon May 17 11:56:30 PDT 2004


I forgot to mention one more test you can do (next time):

	ldd -rv /path/to/rpm

This resolves all symbols in the program, listing all the .so files and
which was missing what. Quite often you can run this on the .so file itself.

So, running ldd -r on rpm and, when symbols are not found, on the .so files
it includes, can be instructive. I think ldd tells which .so file had the
unsatisfied reference.

For example, I have a program compiled on SuSE 9. When I run ldd on from a
Caldera system, I get the attached listing. So, I can see that a library
called librsoft.so.18.00 makes the offending references. I can also see that
my program wants a newer release of the glibc interface than is supplied by
my libc.

I use ldd all the time.

Anyway, glad you sorted it out.

(Related Gentoo plug: Gentoo has a revdep (reverse dependency) program that
will check every installed binary for correctness. Including missing
symbols. It will make a list of the files with problems and (the good part)
offer to update the things that are causing the problem.)

-- 
+????????????????????????????+???????????????????????????????+
? Roger Oberholtzer          ?   E-mail: roger at opq.se        ?
? OPQ Systems AB             ?      WWW: http://www.opq.se/  ?
? Erik Dahlbergsgatan 41-43  ?    Phone: Int + 46 8   314223 ?
? 115 34 Stockholm           ?   Mobile: Int + 46 733 621657 ?
? Sweden                     ?      Fax: Int + 46 8   302602 ?
+????????????????????????????+???????????????????????????????+
-------------- next part --------------
/home/roger/bin/change: /lib/libc.so.6: version `GLIBC_2.3' not found (required by /home/roger/bin/change)
	libmca.so.18.00 => /home/roger/lib/libmca.so.18.00 (0x40016000)
	librsoft.so.18.00 => /home/roger/lib/librsoft.so.18.00 (0x4001f000)
	liblicmgr.so.18.00 => /home/roger/lib/liblicmgr.so.18.00 (0x4006e000)
	libnsl.so.1 => /lib/libnsl.so.1 (0x40083000)
	libm.so.6 => /lib/libm.so.6 (0x40099000)
	libdl.so.2 => /lib/libdl.so.2 (0x400bb000)
	libc.so.6 => /lib/libc.so.6 (0x400bf000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
undefined symbol: __ctype_tolower_loc	(/home/roger/lib/librsoft.so.18.00)
undefined symbol: __ctype_b_loc	(/home/roger/lib/librsoft.so.18.00)
undefined symbol: __ctype_toupper_loc	(/home/roger/lib/librsoft.so.18.00)
symbol __ctype_toupper_loc, version GLIBC_2.3 not defined in file libc.so.6 with link time reference	(/home/roger/bin/change)
symbol __ctype_b_loc, version GLIBC_2.3 not defined in file libc.so.6 with link time reference	(/home/roger/bin/change)

	Version information:
	/home/roger/bin/change:
		libc.so.6 (GLIBC_2.3) => not found
		libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
	/home/roger/lib/libmca.so.18.00:
		libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
	/home/roger/lib/librsoft.so.18.00:
		libm.so.6 (GLIBC_2.0) => /lib/libm.so.6
		libdl.so.2 (GLIBC_2.1) => /lib/libdl.so.2
		libdl.so.2 (GLIBC_2.0) => /lib/libdl.so.2
	/lib/libnsl.so.1:
		libc.so.6 (GLIBC_2.2) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.3) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
	/lib/libm.so.6:
		libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
	/lib/libdl.so.2:
		libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
	/lib/libc.so.6:
		ld-linux.so.2 (GLIBC_2.1.1) => /lib/ld-linux.so.2
		ld-linux.so.2 (GLIBC_2.2.3) => /lib/ld-linux.so.2
		ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
		ld-linux.so.2 (GLIBC_2.2) => /lib/ld-linux.so.2
		ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2


More information about the Linux-users mailing list