[scl.org] devtoolset toolchain shared libs (libstdc++,libgcc,etc)
cls
cls at seawood.org
Thu Feb 9 03:21:15 UTC 2017
Hi,
It appears as though the devtoolset toolchain rpms do not come with a
copy of the libstdc++ shared library nor a handful of other shared
libraries usually provided by gcc. Comparing the SCL and non-SCL
gcc.spec files, it's clear that someone deliberately removed those
shared libs. Why is that? I didn't see any mention of this in the
mailing list archives.
I'm seeing a weird segfault during the destruction of a std::string
derived-object that I do not see with the system compiler (gcc 4.8.5).
I thought that it may have been a compiler error but then while
debugging, I noticed that the c++ programs & libraries are linked
against the system version of libstdc++.so.6 instead of the devtoolset-6
version. That seems like that could cause major problems.
I'm using the pre-built devtoolset-6 from
http://vault.centos.org/7.2.1511/sclo/x86_64/rh/devtoolset-6/ on CentOS
7.2.1511. I modified the boost package to build as part of the
collection since it is highly dependent upon the toolchain. You can see
the runtime dependency upon the system library below as well as the ld
script that causes the system library to get referenced at link time.
[build at cls-scelbuild-72 tmp]$ scl enable devtoolset-6 'ldd
/opt/rh/devtoolset-6/root/usr/lib64/libboost_filesystem.so.1.53.0'
linux-vdso.so.1 => (0x00007ffecfbbe000)
libboost_system.so.1.53.0 =>
/opt/rh/devtoolset-6/root/usr/lib64/libboost_system.so.1.53.0
(0x00007f52ac67d000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f52ac365000)
libm.so.6 => /lib64/libm.so.6 (0x00007f52ac063000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f52abe4d000)
libc.so.6 => /lib64/libc.so.6 (0x00007f52aba8a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f52acab6000)
[build at cls-scelbuild-72 tmp]$ find /opt/rh/devtoolset-6/root/ -name
'libstdc++*.so*' | grep -v gdb
find: ‘/opt/rh/devtoolset-6/root/root’: Permission denied
/opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.2.1/libstdc++.so
/opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.2.1/32/libstdc++.so
[build at cls-scelbuild-72 tmp]$ cat
/opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.2.1/libstdc++.so
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf64-x86-64)
INPUT ( /usr/lib64/libstdc++.so.6 -lstdc++_nonshared )
[build at cls-scelbuild-72 tmp]$
- cls
More information about the SCLorg
mailing list