libstdc++.so without version information
Christian Schaubschlaeger
Christian.Schaubschlaeger@cpsd.at
Wed Nov 25 10:40:00 GMT 2009
Philipp Thomas schrieb:
> On Tue, 24 Nov 2009 16:02:29 +0100, you wrote:
>
>> libdl.so.2 (GLIBC_2.0) => /lib/libdl.so.2
>> libstdc++.so.6 (CXXABI_1.3) => not found
>> libstdc++.so.6 (GLIBCXX_3.4) => not found
>> [snip]
>> It seems that the libstdc++ does not contain the needed information:
>>
>
> You can't check with strings. The right way to check the version
> information is by using 'objdump -p' on the library. When doing so,
> you'll see something like
>
> Version definitions:
> 1 0x01 0x025f4d66 libstdc++.so.6
> 2 0x00 0x08922974 GLIBCXX_3.4
> 3 0x00 0x02297f81 GLIBCXX_3.4.1
> GLIBCXX_3.4
> 4 0x00 0x02297f82 GLIBCXX_3.4.2
> GLIBCXX_3.4.1
> 5 0x00 0x02297f83 GLIBCXX_3.4.3
> GLIBCXX_3.4.2
Thanks for your tips!
With objdump I get:
root:# objdump -p libstdc++.so.6.0.8
libstdc++.so.6.0.8: file format elf32-i386
Program Header:
LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
filesz 0x000e1ee0 memsz 0x000e1ee0 flags r-x
LOAD off 0x000e28d8 vaddr 0x000e28d8 paddr 0x000e28d8 align 2**12
filesz 0x00004190 memsz 0x00009e8c flags rw-
DYNAMIC off 0x000e597c vaddr 0x000e597c paddr 0x000e597c align 2**2
filesz 0x000000e0 memsz 0x000000e0 flags rw-
TLS off 0x000e28d8 vaddr 0x000e28d8 paddr 0x000e28d8 align 2**2
filesz 0x00000000 memsz 0x00000008 flags r--
EH_FRAME off 0x000c4cb0 vaddr 0x000c4cb0 paddr 0x000c4cb0 align 2**2
filesz 0x0000456c memsz 0x0000456c flags r--
STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2
filesz 0x00000000 memsz 0x00000000 flags rw-
RELRO off 0x000e28d8 vaddr 0x000e28d8 paddr 0x000e28d8 align 2**0
filesz 0x000030a4 memsz 0x0000308c flags r--
Dynamic Section:
NEEDED libm.so.6
NEEDED libgcc_s.so.1
NEEDED libc.so.6
NEEDED ld-linux.so.2
SONAME libstdc++.so.6
INIT 0x446c0
FINI 0xc0954
HASH 0x114
STRTAB 0x135ac
SYMTAB 0x4b8c
STRSZ 0x295d0
SYMENT 0x10
PLTGOT 0xe5ff4
PLTRELSZ 0x11a8
PLTREL 0x11
JMPREL 0x43518
REL 0x3e980
RELSZ 0x4b98
RELENT 0x8
VERNEED 0x3e8c0
VERNEEDNUM 0x3
VERSYM 0x3cb7c
RELCOUNT 0x108
Version References:
required from ld-linux.so.2:
0x0d696913 0x00 09 GLIBC_2.3
required from libgcc_s.so.1:
0x0d696910 0x00 10 GLIBC_2.0
0x0b792653 0x00 08 GCC_3.3
0x0b792650 0x00 05 GCC_3.0
required from libc.so.6:
0x0d696911 0x00 07 GLIBC_2.1
0x0d696913 0x00 06 GLIBC_2.3
0x09691f73 0x00 04 GLIBC_2.1.3
0x0d696910 0x00 03 GLIBC_2.0
0x0d696912 0x00 02 GLIBC_2.2
i.e. no CXXABI, no GLIBCXX!
> Looks likeWhat ldconfig is telling you is that it doesn't find the
> library. Try calling ldconfig to get the dynamic linker to cache the
> library and then again ldd.
ldconfig did find the library, but could not extract the version info
(regarding CXXABI and GLIBCXX), since it's obviously not there. And
I don't know why.
Thanks
Christian
More information about the Gcc-help
mailing list