Hi,
I have a library version problem.
I have to use gcc 3.4.3 because I am developing using the LEDA library,
and we only have the library for that compiler and no subscription
including compiler upgrades :-|
Well, I am using boost-1.33.1 for libboost_program_options-gcc-mt-d.so.
I got that compiled with gcc34/g++34 (the name of the gcc 3.4 binaries
on the system I am using).
But when linking with my program, I get
/usr/lib64/../x86_64-suse-linux/bin/ld: warning: libstdc++.so.5, needed
by
/home/jmueller/software-gcc34-64bit/boost/lib/libboost_program_options-gcc-mt-d.so,
may conflict with libstdc++.so.6
ldd confirms the version mismatch:
$ ldd
/home/jmueller/software-gcc34-64bit/boost/lib/libboost_program_options-gcc-mt-d.so
librt.so.1 => /lib64/tls/librt.so.1 (0x00002aaaaac54000)
libstdc++.so.5 => /usr/lib64/libstdc++.so.5 (0x00002aaaaad5c000)
libm.so.6 => /lib64/tls/libm.so.6 (0x00002aaaaaf38000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002aaaab090000)
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x00002aaaab19b000)
libc.so.6 => /lib64/tls/libc.so.6 (0x00002aaaab2b0000)
/lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
jmueller@compute4:~/separator_devel/separator_jens$ ldd separator
libboost_program_options-gcc-mt-d-1_33_1.so.1.33.1 =>
/home/jmueller/software-gcc34-64bit/boost/lib/libboost_program_options-gcc-mt-d-1_33_1.so.1.33.1
(0x00002aaaaabc2000)
libexpat.so.1 =>
/home/jmueller/software-gcc34-64bit/expat/lib/libexpat.so.1
(0x00002aaaaad3b000)
libxerces-c.so.27 =>
/home/jmueller/software-gcc34-64bit/xerces-2.7.0/lib/libxerces-c.so.27
(0x00002aaaaae5e000)
libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x00002aaaab3a7000)
liblog4cplus.so.2 =>
/home/mholzer/Linux/log4cplus-1.0.2_gcc3.4.3_64bit/src/.libs/liblog4cplus.so.2
(0x00002aaaab4b7000)
libstdc++.so.6 => /sw/linux/gcc34/usr/lib64/libstdc++.so.6
(0x00002aaaab622000)
libm.so.6 => /lib64/tls/libm.so.6 (0x00002aaaab814000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002aaaab96c000)
libc.so.6 => /lib64/tls/libc.so.6 (0x00002aaaaba77000)
librt.so.1 => /lib64/tls/librt.so.1 (0x00002aaaabc9d000)
libstdc++.so.5 => /usr/lib64/libstdc++.so.5 (0x00002aaaabda6000)
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x00002aaaabf82000)
/lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)
When running the binary, I get a SIGSEGV.
So, my first question on this issue is: Shouldn't gcc normally have the
paths to its C++ stdlib hard-coded into the binary?
And what is the libstdc++ version used in gcc 3.4.3?
I don't really understand what's happing here ...
The setup of the system I use for compiling is unfortunately quite a
mess, so maybe it'll get ugly.
But first I would be really grateful for some hints on the questions
above ...
Jens