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