ROOT 6.14.00 - TBB Fails to Compile

Dear ROOTers,

I am trying to install ROOT 6.14.00 on a server with SL6 as OS. I installed the compiler gcc4.8 and I am using the following settings to point to the correct compiler and python versions:

cmake3 -DCMAKE_CXX_COMPILER=/opt/exp_soft/t2k.org/riccioc/gcc-4.8.2/install/gcc-4.8.2/bin/g++4.8 -DCMAKE_C_COMPILER=/opt/exp_soft/t2k.org/riccioc/gcc-4.8.2/install/gcc-4.8.2/bin/gcc4.8 -DPYTHON_EXECUTABLE=/usr/bin/python3.4 …/root-6.12.06/

Then I build root using the command cmake3 --build . and the error message is the following

[ 74%] Performing build step for ‘TBB’
CMake Error at /opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-RelWithDebInfo.cmake:16 (message):
Command failed: 2

‘make’ ‘compiler=gcc’ ‘CXXFLAGS= -mno-rtm’ ‘CPLUS=/opt/exp_soft/t2k.org/riccioc/gcc-4.8.2/install/gcc-4.8.2/bin/g++4.8’ ‘CONLY=/opt/exp_soft/t2k.org/riccioc/gcc-4.8.2/install/gcc-4.8.2/bin/gcc4.8’

See also

/opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-*.log

gmake[2]: *** [TBB-prefix/src/TBB-stamp/TBB-build] Error 1
gmake[1]: *** [CMakeFiles/TBB.dir/all] Error 2
gmake: *** [all] Error 2

The TBB log files contain the following message:

$ more /opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-*.log
::::::::::::::
/opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-err.log
::::::::::::::
…/…/build/Makefile.tbb:32: CONFIG: cfg=debug arch=intel64 compiler=gcc target=linux runtime=cc4.4.7_libc2.12_kernel2.6.32
cc1plus: error: unrecognized command line option “-mno-rtm”
make[4]: *** [concurrent_hash_map.o] Error 1
make[3]: *** [tbb] Error 2
::::::::::::::
/opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-out.log
::::::::::::::
Created ./build/linux_intel64_gcc_cc4.4.7_libc2.12_kernel2.6.32_release and …_debug directories

Do you know how I can solve?

Ciro

PS. Note that I cannot be superuser.


_ROOT Version: 6.14.00
_Platform: SL6
_Compiler: gcc4.8


You need a compiler with C++11 support to be able to compile ROOT, and GCC-4.8.2 is too old for that. The oldest supported version is GCC 4.8.5.

Hi Amadio,

thank you very much for your reply. I installed gcc8.1 and I have the same problem:

CMake Error at /opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-RelWithDebInfo.cmake:16 (message):
Command failed: 2

‘make’ ‘compiler=gcc’ ‘CXXFLAGS= -mno-rtm’ ‘CPLUS=/opt/exp_soft/t2k.org/riccioc/gcc-8.1.0/build/install/bin/g++8.1’ ‘CONLY=/opt/exp_soft/t2k.org/riccioc/gcc-8.1.0/build/install/bin/gcc8.1’

See also

/opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-*.log

gmake[2]: *** [TBB-prefix/src/TBB-stamp/TBB-build] Error 1
gmake[1]: *** [CMakeFiles/TBB.dir/all] Error 2
gmake: *** [all] Error 2

Do you know what it is going on here?

Thank you for your help,

Ciro

Could you please post the error from the log file (i.e. .../TBB-stamp/TBB-build-*.log)?

Here are the logs:

more /opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-*.log
::::::::::::::
/opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-err.log
::::::::::::::
…/…/build/Makefile.tbb:32: CONFIG: cfg=debug arch=intel64 compiler=gcc target=linux runtime=cc4.4.7_libc2.12_kernel2.6.32
cc1plus: error: unrecognized command line option “-mno-rtm”
make[4]: *** [concurrent_hash_map.o] Error 1
make[3]: *** [tbb] Error 2
::::::::::::::
/opt/exp_soft/t2k.org/riccioc/root/build_root-6.14.00/TBB-prefix/src/TBB-stamp/TBB-build-out.log
::::::::::::::
Created ./build/linux_intel64_gcc_cc4.4.7_libc2.12_kernel2.6.32_release and …_debug directories

Seems to me that the problem is that TBB installation is trying to use gcc4.4.7 even if I set gcc8.1 as complier in this way:

cmake3 -DCMAKE_CXX_COMPILER=/opt/exp_soft/t2k.org/riccioc/gcc-8.1.0/build/install/bin/g++8.1 -DCMAKE_C_COMPILER=/opt/exp_soft/t2k.org/riccioc/gcc-8.1.0/build/install/bin/gcc8.1 -DPYTHON_EXECUTABLE=/opt/exp_soft/t2k.org/riccioc/Python-2.7.3/python …/root-6.14.00/

That should not happen. I will take a look at it and fix. If you hard-code gcc-8.1 in the right place, or make gcc run your gcc-8.1 you should be able to make it work, though. I recommend prepending $HOME/bin to your $PATH and placing wrapper scripts to gcc and g++ there.

I have a setup.sh in /opt/exp_soft/t2k.org/riccioc/gcc-8.1:

export PATH=/opt/exp_soft/t2k.org/riccioc/gcc-8.1.0/build/install/gcc-8.1.0/bin:$PATH
export LD_LIBRARY_PATH=/opt/exp_soft/t2k.org/riccioc/gcc-8.1.0/build/install/gcc-8.1.0/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/exp_soft/t2k.org/riccioc/gcc-8.1.0/build/install/gcc-8.1.0/lib64:$LD_LIBRARY_PATH

alias gcc=‘gcc8.1’
alias c++=‘c++8.1’
alias cc=‘gcc8.1’

Should I write it in a different way?

Yes, alias is usually not picked up by sub-processes, so TBB will end up using the actual gcc. Here is my suggestion:

mkdir -p $HOME/bin
export PATH=$HOME/bin:$PATH
ln -s $(which gcc-8.1) $HOME/bin/gcc
ln -s $(which g++-8.1) $HOME/bin/g++

Hi Amadio,

this solved the problem with TBB, but I have another error:

[ 26%] Building arm_neon.h…
…/…/…/…/bin/clang-tblgen: /usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.20' not found (required by ../../../../bin/clang-tblgen) ../../../../bin/clang-tblgen: /usr/lib64/libstdc++.so.6: versionGLIBCXX_3.4.14’ not found (required by …/…/…/…/bin/clang-tblgen)
…/…/…/…/bin/clang-tblgen: /usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.19' not found (required by ../../../../bin/clang-tblgen) ../../../../bin/clang-tblgen: /usr/lib64/libstdc++.so.6: versionGLIBCXX_3.4.21’ not found (required by …/…/…/…/bin/clang-tblgen)
gmake[2]: *** [interpreter/llvm/src/tools/clang/lib/Headers/arm_neon.h.tmp] Error 1
gmake[1]: *** [interpreter/llvm/src/tools/clang/lib/Headers/CMakeFiles/clang-headers.dir/all] Error 2
gmake: *** [all] Error 2

Do you know how to solve this, as well?

Thank you,
Ciro

Hi @riccioc, the error above means that your compiler and the standard library are mutually incompatible. It’s a common problem with C++. The problem you see is similar to the one reported here.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.