VisIt and GCC 7.1.0

Building VisIt using a GCC 7.1.0 compiler has presented some issues. Some 3rd party packages lack build support for GCC 7.1.0 while some others have some code that is not compatible with GCC 7.1.0. Other problems may arise from not having GCC 7.1.0 in the LD_LIBRARY_PATH when the build for 3rd party programs relies on running GCC 7.1.0-compiled executables as part of the build.

The goal is to first document these problems so we can make patches or 3rd party library upgrades that fix the build for GCC 7.1.0.

  • VTK runs a program to gather the GL API or something and this will fail unless LD_LIBRARY_PATH contains the path to the right compiler's libstdc++.so.6, which in my case was located in /usr/local/gcc/7.1.0/lib64.
  • (fixed) VTK has 2 cmake files that lack support for GCC 7, which breaks the build. The files use a regular expression containing 3456 to process the GCC version string. The code has to change to 34567.
    • VTK6.1.0/CMake/GenerateExportHeader.cmake:169
  • MPICH had linker errors related to duplicate lstat64 calls. I upgraded to mpich 3.2 and that fixed the problem.
  • (fixed) Pyside's shiboken library contains a file that tries to return an ifstream for a bool return value. I changed the lines to return ifile.good().

VisIt has some GCC 7.1 issues too.

  • (fixed) The Vs reader won't build: databases/Vs/VsStaggeredField.C:150:28: note: mismatched types ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’ and ‘size_t {aka long unsigned int}’