Resulting files from canadian cross

Kai Ruottu karuottu@mbnet.fi
Thu Mar 22 18:59:00 GMT 2007


Maurits van de Kamp wrote:

 > After symlinking everything in /usr/arm/lib to /lib (just for now, I 
will figure out what
 > goes where later) :) and try to run my c++ helloworld again, I get:
 > ./helloworld2: /lib/libgcc_s.so.1: version `GCC_3.4' not found (required
 > by /lib/libstdc++.so.6)
 > Now this error totally baffles me. I'm using gcc 4.0.2 and glibc 2.3.6,
 > totally compatible, now why is it looking for 3.4 and why does the
 > linker care about finding gcc at all?

The '/lib/libgcc_s.so.1' will be produced with GCC and a newer one 
should be compatible
with the old installed apps and old installed runtimes needing it. But 
those requirements and
definitions can be checked. If I look at my shared C++ runtime from 
gcc-3.4.6 via
'arm-linux-gnu-objdump -p' :

----------- clip ---------------------------
libstdc++.so.6.0.3:     file format elf32-littlearm
<snip>
Dynamic Section:
  NEEDED      libm.so.6
  NEEDED      libgcc_s.so.1
  NEEDED      libc.so.6
  SONAME      libstdc++.so.6
<snip>
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
6 0x00 0x056bafd3 CXXABI_1.3

Version References:
  required from libm.so.6:
    0x0d696910 0x00 10 GLIBC_2.0
  required from libc.so.6:
    0x09691f73 0x00 15 GLIBC_2.1.3
    0x0d696913 0x00 14 GLIBC_2.3
    0x0d696912 0x00 13 GLIBC_2.2
    0x0d696911 0x00 12 GLIBC_2.1
    0x0d696910 0x00 08 GLIBC_2.0
  required from libgcc_s.so.1:
    0x0b792653 0x00 11 GCC_3.3
    0x0b792650 0x00 09 GCC_3.0
    0x0d696910 0x00 07 GLIBC_2.0
private flags = 2: [APCS-32] [FPA float format] [has entry point]
----------- clip ---------------------------

there is that 'required from libgcc_s.so.1' part with 'GCC_3.3' and 
'GCC_3.0'
and GLIBC_2.0 ....

The 'libgcc_s.so.1' produced at the same time then has :

----------- clip ---------------------------
libgcc_s.so.1:     file format elf32-littlearm
<snip>
Dynamic Section:
  NEEDED      libc.so.6
  SONAME      libgcc_s.so.1
<snip>
Version definitions:
1 0x01 0x04bd5c11 libgcc_s.so.1
2 0x00 0x0d696910 GLIBC_2.0
3 0x00 0x0b792650 GCC_3.0
        GLIBC_2.0
4 0x00 0x0b792653 GCC_3.3
        GCC_3.0
5 0x00 0x09265f61 GCC_3.3.1
        GCC_3.3
6 0x00 0x0b792654 GCC_3.4
        GCC_3.3.1
7 0x00 0x09265e62 GCC_3.4.2
        GCC_3.4

Version References:
  required from libc.so.6:
    0x09691f73 0x00 09 GLIBC_2.1.3
    0x0d696910 0x00 08 GLIBC_2.0
private flags = 2: [APCS-32] [FPA float format] [has entry point]
----------- clip ---------------------------

ie those 'GCC_3.3', 'GCC_3.0' and 'GLIBC_2.0' appearing in "Version 
definitions"
and at least these two runtimes seem to be in sync what becomes these three
"version definitions...

Generally  I don't know what these things are but  using 'objdump -p' 
lets one to
wonder them and see if something is missing :-)
 
So you probably should have the old one replaced with the gcc-4.0.2 
one,  it then
working with the new '/lib/libstdc++.so.6'.  Why the "everything in 
/usr/arm/lib"
didn't include 'libgcc_s.so.1' is odd, but maybe replacing the existing 
'libgcc_s.so.1'
with a symlink just failed...


--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list