Wrong libstdc++
I must use a ubuntu 14.04 system. But I also need to run recent cmake to compile recent programs that requires recent cmake. So here I am compiling the latest cmake tarball, which seems to be needing a recent libstdc++(what is wrong with the version on ubuntu 14? Did the C++ standard change between 2014 and 2018?). Anyways, I’m providing a gcc7 with libstdc++ in /usr/local/lib64, and LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64:/lib/usr/lib Bootstap, makeand make install and:
[100%] Built target foo
/usr/local/src/cmake-3.12.1/Bootstrap.cmk/cmake: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/local/src/cmake-3.12.1/Bootstrap.cmk/cmake)
/usr/local/src/cmake-3.12.1/Bootstrap.cmk/cmake: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/local/src/cmake-3.12.1/Bootstrap.cmk/cmake)
/usr/local/src/cmake-3.12.1/Bootstrap.cmk/cmake: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/src/cmake-3.12.1/Bootstrap.cmk/cmake)
make: *** [cmake_check_build_system] Error 1
F/3:45:37[pjb@L0231342 :0.0 cmake-3.12.1]$ ldd /usr/local/src/cmake-3.12.1/Bootstrap.cmk/cmake
linux-vdso.so.1 => (0x00007ffe7a7d6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fcf7c225000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fcf7c01d000)
libstdc++.so.6 => /usr/local/lib64/libstdc++.so.6 (0x00007fcf7bc9c000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fcf7b996000)
libgcc_s.so.1 => /usr/local/lib64/libgcc_s.so.1 (0x00007fcf7b780000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcf7b3b7000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcf7c429000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fcf7b199000)’
F/3:45:37[pjb@L0231342 :0.0 cmake-3.12.1]$ nm /usr/local/lib64/libstdc\+\+.so.6|grep ' GLIB' |sort -t. -k 3n
0000000000000000 A GLIBCXX_3.4
0000000000000000 A GLIBCXX_3.4.1
0000000000000000 A GLIBCXX_3.4.2
0000000000000000 A GLIBCXX_3.4.3
0000000000000000 A GLIBCXX_3.4.4
0000000000000000 A GLIBCXX_3.4.5
0000000000000000 A GLIBCXX_3.4.6
0000000000000000 A GLIBCXX_3.4.7
0000000000000000 A GLIBCXX_3.4.8
0000000000000000 A GLIBCXX_3.4.9
0000000000000000 A GLIBCXX_3.4.10
0000000000000000 A GLIBCXX_3.4.11
0000000000000000 A GLIBCXX_3.4.12
0000000000000000 A GLIBCXX_3.4.13
0000000000000000 A GLIBCXX_3.4.14
0000000000000000 A GLIBCXX_3.4.15
0000000000000000 A GLIBCXX_3.4.16
0000000000000000 A GLIBCXX_3.4.17
0000000000000000 A GLIBCXX_3.4.18
0000000000000000 A GLIBCXX_3.4.19
0000000000000000 A GLIBCXX_3.4.20
0000000000000000 A GLIBCXX_3.4.21
0000000000000000 A GLIBCXX_3.4.22
0000000000000000 A GLIBCXX_3.4.23
0000000000000000 A GLIBCXX_3.4.24
F/3:45:37[pjb@L0231342 :0.0 cmake-3.12.1]$ nm /usr/local/lib64/libstdc\+\+.so.6|grep ' CXXABI' |sort -t. -k 3n
0000000000000000 A CXXABI_1.3
0000000000000000 A CXXABI_FLOAT128
0000000000000000 A CXXABI_TM_1
0000000000000000 A CXXABI_1.3.1
0000000000000000 A CXXABI_1.3.2
0000000000000000 A CXXABI_1.3.3
0000000000000000 A CXXABI_1.3.4
0000000000000000 A CXXABI_1.3.5
0000000000000000 A CXXABI_1.3.6
0000000000000000 A CXXABI_1.3.7
0000000000000000 A CXXABI_1.3.8
0000000000000000 A CXXABI_1.3.9
0000000000000000 A CXXABI_1.3.10
0000000000000000 A CXXABI_1.3.11
F/3:45:37[pjb@L0231342 :0.0 cmake-3.12.1]$
Note how ldd points to the right libstdc++!
Edited by Pascal Bourguignon