Error Linking QT application

Hello everyone,
I am trying to install MRtrix3 on Linux Mint 18.3. I have followed the instruction mentioned in the documentation and got stuck in “configure” step. I am getting the following error: (I am pasting the contents in configure.log file)

REPORT: 
MRtrix build type requested: release version

REPORT: Detecting OS: linux

REPORT: Looking for compiler [clang++]:
EXEC <<
CMD: clang++ --version
error invoking command "clang++": No such file or directory
>>


REPORT: not found

REPORT: Looking for compiler [g++]:
EXEC <<
CMD: g++ --version
EXIT: 0
STDOUT:
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>>


REPORT: g++ (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609

REPORT: Checking for C++11 compliance:

COMPILE /tmp/tmpegjKTh.cpp:
---

#include <cstddef>
struct Base {
    Base (int);
};
struct Derived : Base {
    using Base::Base;
};

int main() {
  Derived D (int); // check for contructor inheritance
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC /tmp/tmpegjKTh.cpp -o /tmp/tmpegjKTh.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpegjKTh.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking shared library generation:
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC /tmp/tmpPPx3rk.cpp -o /tmp/tmpPPx3rk.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpPPx3rk.o -shared -Wl,--sort-common,--as-needed -pthread -o libtest.so
EXIT: 0
>>


REPORT: ok

REPORT: Detecting pointer size:

COMPILE /tmp/tmpqyCZPX.cpp:
---

#include <iostream>
int main() {
  std::cout << sizeof(void*);
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC /tmp/tmpqyCZPX.cpp -o /tmp/tmpqyCZPX.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpqyCZPX.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
8
>>


REPORT: 64 bit

REPORT: Detecting byte order:

REPORT: little-endian

REPORT: Checking for variable-length array support:

COMPILE /tmp/tmpRx8HS8.cpp:
---

int main(int argc, char* argv[]) {
  int x[argc];
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpRx8HS8.cpp -o /tmp/tmpRx8HS8.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpRx8HS8.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking for non-POD variable-length array support:

COMPILE /tmp/tmpOcIkzC.cpp:
---

#include <string>

class X {
  int x;
  double y;
  std::string s;
};

int main(int argc, char* argv[]) {
  X x[argc];
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpOcIkzC.cpp -o /tmp/tmpOcIkzC.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpOcIkzC.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking for ::max_align_t:

COMPILE /tmp/tmp7rX72v.cpp:
---

#include <iostream>
#include <cstddef>
using ::max_align_t;
int main() {
  std::cout << alignof (max_align_t) << " bytes\n";
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmp7rX72v.cpp -o /tmp/tmp7rX72v.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmp7rX72v.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
16 bytes
>>


REPORT: 16 bytes

REPORT: Checking for std::max_align_t:

COMPILE /tmp/tmpiahmZQ.cpp:
---

#include <iostream>
#include <cstddef>
using std::max_align_t;
int main() {
  std::cout << alignof (max_align_t) << " bytes\n";
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpiahmZQ.cpp -o /tmp/tmpiahmZQ.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpiahmZQ.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
16 bytes
>>


REPORT: 16 bytes
EXEC <<
CMD: pkg-config --cflags eigen3
EXIT: 0
STDOUT:
-I/usr/include/eigen3
>>


REPORT: Checking for Eigen3 library:

COMPILE /tmp/tmpeoaXfy.cpp:
---

#include <cstddef>
#include <Eigen/Core>
#include <iostream>

int main (int argc, char* argv[]) {
  std::cout << EIGEN_WORLD_VERSION << "." << EIGEN_MAJOR_VERSION << "." << EIGEN_MINOR_VERSION << "\n";
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/include/eigen3 /tmp/tmpeoaXfy.cpp -o /tmp/tmpeoaXfy.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpeoaXfy.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
3.2.92
>>


REPORT: 3.2.92
EXEC <<
CMD: pkg-config --cflags zlib
EXIT: 0
STDOUT:
-I/usr/local/include
>>

EXEC <<
CMD: pkg-config --libs zlib
EXIT: 0
STDOUT:
-L/usr/local/lib -lz
>>


REPORT: Checking for zlib compression library:

COMPILE /tmp/tmpHNcfqX.cpp:
---

#include <iostream>
#include <zlib.h>

int main() {
  std::cout << zlibVersion();
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include /tmp/tmpHNcfqX.cpp -o /tmp/tmpHNcfqX.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpHNcfqX.o -Wl,--sort-common,--as-needed -pthread -L/usr/local/lib -lz -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
1.2.11
>>


REPORT: 1.2.11

REPORT: Checking for "JSON for Modern C++" requirements:

COMPILE /tmp/tmpw5JBsL.cpp:
---

#include "file/json.h"
int main (int argc, char* argv[])
{
  nlohmann::json json;
  json["key"] = "value";
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -I/home/preetam/mrtrix3/core /tmp/tmpw5JBsL.cpp -o /tmp/tmpw5JBsL.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpw5JBsL.o -Wl,--sort-common,--as-needed -pthread -L/usr/local/lib -lz -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok
EXEC <<
CMD: pkg-config --cflags libtiff-4
EXIT: 0
STDOUT:
-I/usr/include/x86_64-linux-gnu
>>

EXEC <<
CMD: pkg-config --libs libtiff-4
EXIT: 0
STDOUT:
-ltiff
>>


REPORT: Checking for TIFF library:

COMPILE /tmp/tmp3XvzXe.cpp:
---

#include <iostream>
#include <tiffio.h>

int main() {
  std::cout << TIFFGetVersion();
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -isystem /usr/include/x86_64-linux-gnu /tmp/tmp3XvzXe.cpp -o /tmp/tmp3XvzXe.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmp3XvzXe.o -Wl,--sort-common,--as-needed -pthread -L/usr/local/lib -lz -ltiff -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
LIBTIFF, Version 4.0.6
Copyright (c) 1988-1996 Sam Leffler
Copyright (c) 1991-1996 Silicon Graphics, Inc.
>>


REPORT: LIBTIFF, Version 4.0.6
EXEC <<
CMD: pkg-config --cflags fftw3
EXIT: 0
>>

EXEC <<
CMD: pkg-config --libs fftw3
EXIT: 0
STDOUT:
-lfftw3
>>


REPORT: Checking for FFTW library:

COMPILE /tmp/tmp8E26QJ.cpp:
---

#include <iostream>
#include <fftw3.h>

int main() {
  std::cout << fftw_version << "\n";
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -DMRTRIX_TIFF_SUPPORT -isystem /usr/include/x86_64-linux-gnu /tmp/tmp8E26QJ.cpp -o /tmp/tmp8E26QJ.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmp8E26QJ.o -Wl,--sort-common,--as-needed -pthread -L/usr/local/lib -lz -ltiff -lfftw3 -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
fftw-3.3.4-sse2-avx
>>


REPORT: fftw-3.3.4-sse2-avx

REPORT: Checking for Qt moc:
EXEC <<
CMD: moc -v
EXIT: 0
STDOUT:
moc 5.5.1
>>


REPORT: moc (version 5.5.1)

REPORT: Checking for Qt qmake:
EXEC <<
CMD: qmake -v
EXIT: 0
STDOUT:
QMake version 3.0
Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu
>>


REPORT: qmake (version 5.5.1)

REPORT: Checking for Qt rcc:
EXEC <<
CMD: rcc -v
EXIT: 0
STDOUT:
rcc 5.5.1
>>


REPORT: rcc (version 5.5.1)

REPORT: Checking for Qt:

source file "qt.h":
---
#include <QObject>

class Foo: public QObject {
  Q_OBJECT;
  public:
    Foo();
    ~Foo();
  public slots:
    void setValue(int value);
  signals:
    void valueChanged (int newValue);
  private:
    int value_;
};
---

source file "qt.cpp":
---
#include <iostream>
#include "qt.h"

Foo::Foo() : value_ (42) { connect (this, SIGNAL(valueChanged(int)), this, SLOT(setValue(int))); }

Foo::~Foo() { std::cout << qVersion() << "\n"; }

void Foo::setValue (int value) { value_ = value; }

int main() { Foo f; }
---

project file "qt.pro":
---
CONFIG += c++11
QT += core gui opengl svg
HEADERS += qt.h
SOURCES += qt.cpp
---
EXEC <<
CMD: qmake
EXIT: 0
>>

EXEC <<
CMD: moc qt.h -o qt_moc.cpp
EXIT: 0
>>

EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -DMRTRIX_TIFF_SUPPORT -isystem /usr/include/x86_64-linux-gnu -DEIGEN_FFTW_DEFAULT -m64 -pipe -std=c++0x -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtOpenGL -isystem /usr/include/x86_64-linux-gnu/qt5/QtSvg -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 qt.cpp -o qt.o
EXIT: 0
>>

EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -DMRTRIX_TIFF_SUPPORT -isystem /usr/include/x86_64-linux-gnu -DEIGEN_FFTW_DEFAULT -m64 -pipe -std=c++0x -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtOpenGL -isystem /usr/include/x86_64-linux-gnu/qt5/QtSvg -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 qt_moc.cpp -o qt_moc.o
EXIT: 0
>>

EXEC <<
CMD: g++ -Wl,--sort-common,--as-needed -pthread -L/usr/local/lib -lz -ltiff -lfftw3 qt_moc.o qt.o -o qt -m64 -Wl,-O1 -L/usr/X11R6/lib64 -lQt5OpenGL -lQt5Svg -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread
EXIT: 1
STDERR:
/usr/bin/ld: cannot find -lQt5OpenGL
collect2: error: ld returned 1 exit status
>>


ERROR: error linking Qt application!

  See the file 'configure.log' for details. If this doesn't help and you need
  further assistance, please post on the MRtrix3 community forum
  (http://community.mrtrix.org/), and make sure to include the full contents of
  the 'configure.log' file.

Please help get through this error. Your time and efforts are much appreciated! Thank you.

It looks to me like you don’t have the OpenGL Qt5 package install. As far as I can tell, Linux Mint 18.3 is based on Ubuntu 16.04, so the package you’d be looking for is libqt5opengl5. Try installing that with:

sudo apt-get install libqt5opengl5 

and see if this resolves the problem.

Hello Dr. Donald,
Thank you for the reply, but I have already tried installing that package. Nevertheless, I gave it one more try and I got this message: libqt5opengl5 is already the newest version (5.5.1+dfsg-16ubuntu7.5).
I have installed the complete qt-sdk as I read somewhere on this site that it solved the problem. Could it be because I have anaconda installed on my system and it has a different version of qt?
Thanks for the help, Preetam.

Sorry, you’ll also need the development version of this package. Can you try installing libqt5opengl5-dev too? Hopefully that’ll fix it…

Thanks for that! That fixed the issue. However, now I am facing another problem while building. Unfortunately, I am not able to identify what went wrong, I suspect it has something to do with Eigen. Please take a look:

mrtrix3 # ./build
(  1/467) [CC] tmp/src/registration/transform/rigid.o
(  2/467) [CC] tmp/src/surface/algo/mesh2image.o
(  3/467) [CC] tmp/core/progressbar.o
(  4/467) [CC] tmp/cmd/mrmetric.o
(  5/467) [MOC] tmp/src/gui/mrview/tool/tractography/tractography_moc.cpp
(  6/467) [CC] tmp/src/surface/mesh_multi.o
(  8/467) [CC] tmp/core/image_io/ram.o
(  7/467) [CC] tmp/cmd/mrthreshold.o
(  9/467) [CC] tmp/src/gui/mrview/tool/fixel/base_fixel.o
( 10/467) [CC] tmp/cmd/tckmap.o
( 11/467) [MOC] tmp/src/gui/dialog/image_properties_moc.cpp
( 12/467) [CC] tmp/src/registration/transform/initialiser.o
( 13/467) [CC] tmp/src/gui/mrview/tool/odf/preview_moc.o
( 14/467) [CC] tmp/cmd/tckdfc.o
ERROR: ( 12/467) [CC] tmp/src/registration/transform/initialiser.o
ERROR: (  4/467) [CC] tmp/cmd/mrmetric.o
ERROR: (  1/467) [CC] tmp/src/registration/transform/rigid.o

ERROR: ( 12/467) [CC] tmp/src/registration/transform/initialiser.o

g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -DMRTRIX_TIFF_SUPPORT -isystem /usr/include/x86_64-linux-gnu -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE src/registration/transform/initialiser.cpp -o tmp/src/registration/transform/initialiser.o

failed with output

In file included from /usr/include/eigen3/unsupported/Eigen/MatrixFunctions:58:0,
                 from src/registration/transform/base.h:20,
                 from src/registration/transform/initialiser.h:21,
                 from src/registration/transform/initialiser.cpp:16:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h: In instantiation of void Eigen::internal::matrix_sqrt_quasi_triangular_2x2_off_diagonal_block(const MatrixType&, typename MatrixType::Index, typename MatrixType::Index, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>; typename MatrixType::Index = long int]:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:154:60:   required from void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:188:54:   required from void Eigen::matrix_sqrt_quasi_triangular(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:272:33:   required from static void Eigen::internal::matrix_sqrt_compute<MatrixType, 0>::run(const MatrixType&, ResultType&) [with ResultType = Eigen::Matrix<double, 4, 4>; MatrixType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:344:63:   required from void Eigen::MatrixSquareRootReturnValue<Derived>::evalTo(ResultType&) const [with ResultType = Eigen::Matrix<double, 4, 4>; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/ReturnByValue.h:62:7:   required from void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, 4, 4>; Derived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:834:7:   required from void Eigen::PlainObjectBase<Derived>::_init1(const Eigen::ReturnByValue<OtherDerived>&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; OtherDerived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/Matrix.h:296:31:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const T&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 0; int _MaxRows = 4; int _MaxCols = 4]
/usr/local/include/Eigen/src/Core/DenseBase.h:406:62:   required from Eigen::DenseBase<Derived>::EvalReturnType Eigen::DenseBase<Derived>::eval() const [with Derived = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; Eigen::DenseBase<Derived>::EvalReturnType = const Eigen::Matrix<double, 4, 4>]
src/registration/transform/base.h:253:35:   required from here
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:79:56: error: matrix_sqrt_quasi_triangular_solve_auxiliary_equation was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
   matrix_sqrt_quasi_triangular_solve_auxiliary_equation(X, A, B, C);
                                                        ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:85:6: note: template<class MatrixType> void Eigen::internal::matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType&, const MatrixType&, const MatrixType&, const MatrixType&) declared here, later in the translation unit
 void matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType& X, const MatrixType& A, const MatrixType& B, const MatrixType& C)
      ^

ERROR: (  4/467) [CC] tmp/cmd/mrmetric.o

g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -DMRTRIX_TIFF_SUPPORT -isystem /usr/include/x86_64-linux-gnu -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE cmd/mrmetric.cpp -o tmp/cmd/mrmetric.o

failed with output

In file included from /usr/include/eigen3/unsupported/Eigen/MatrixFunctions:58:0,
                 from ./core/math/average_space.h:19,
                 from cmd/mrmetric.cpp:22:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h: In instantiation of void Eigen::internal::matrix_sqrt_quasi_triangular_2x2_off_diagonal_block(const MatrixType&, typename MatrixType::Index, typename MatrixType::Index, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>; typename MatrixType::Index = long int]:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:154:60:   required from void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:188:54:   required from void Eigen::matrix_sqrt_quasi_triangular(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:272:33:   required from static void Eigen::internal::matrix_sqrt_compute<MatrixType, 0>::run(const MatrixType&, ResultType&) [with ResultType = Eigen::Matrix<double, 4, 4>; MatrixType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:344:63:   required from void Eigen::MatrixSquareRootReturnValue<Derived>::evalTo(ResultType&) const [with ResultType = Eigen::Matrix<double, 4, 4>; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/ReturnByValue.h:62:7:   required from void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, 4, 4>; Derived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:834:7:   required from void Eigen::PlainObjectBase<Derived>::_init1(const Eigen::ReturnByValue<OtherDerived>&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; OtherDerived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/Matrix.h:296:31:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const T&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double/tmp/tmp_j_uSY

























ERROR: ( 12/467) [CC] tmp/src/registration/transform/initialiser.o

g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -DMRTRIX_TIFF_SUPPORT -isystem /usr/include/x86_64-linux-gnu -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE src/registration/transform/initialiser.cpp -o tmp/src/registration/transform/initialiser.o

failed with output

In file included from /usr/include/eigen3/unsupported/Eigen/MatrixFunctions:58:0,
                 from src/registration/transform/base.h:20,
                 from src/registration/transform/initialiser.h:21,
                 from src/registration/transform/initialiser.cpp:16:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h: In instantiation of void Eigen::internal::matrix_sqrt_quasi_triangular_2x2_off_diagonal_block(const MatrixType&, typename MatrixType::Index, typename MatrixType::Index, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>; typename MatrixType::Index = long int]:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:154:60:   required from void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:188:54:   required from void Eigen::matrix_sqrt_quasi_triangular(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:272:33:   required from static void Eigen::internal::matrix_sqrt_compute<MatrixType, 0>::run(const MatrixType&, ResultType&) [with ResultType = Eigen::Matrix<double, 4, 4>; MatrixType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:344:63:   required from void Eigen::MatrixSquareRootReturnValue<Derived>::evalTo(ResultType&) const [with ResultType = Eigen::Matrix<double, 4, 4>; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/ReturnByValue.h:62:7:   required from void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, 4, 4>; Derived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:834:7:   required from void Eigen::PlainObjectBase<Derived>::_init1(const Eigen::ReturnByValue<OtherDerived>&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; OtherDerived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/Matrix.h:296:31:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const T&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 0; int _MaxRows = 4; int _MaxCols = 4]
/usr/local/include/Eigen/src/Core/DenseBase.h:406:62:   required from Eigen::DenseBase<Derived>::EvalReturnType Eigen::DenseBase<Derived>::eval() const [with Derived = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; Eigen::DenseBase<Derived>::EvalReturnType = const Eigen::Matrix<double, 4, 4>]
src/registration/transform/base.h:253:35:   required from here
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:79:56: error: matrix_sqrt_quasi_triangular_solve_auxiliary_equation was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
   matrix_sqrt_quasi_triangular_solve_auxiliary_equation(X, A, B, C);
                                                        ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:85:6: note: template<class MatrixType> void Eigen::internal::matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType&, const MatrixType&, const MatrixType&, const MatrixType&) declared here, later in the translation unit
 void matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType& X, const MatrixType& A, const MatrixType& B, const MatrixType& C)
      ^

ERROR: (  4/467) [CC] tmp/cmd/mrmetric.o

g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -DMRTRIX_TIFF_SUPPORT -isystem /usr/include/x86_64-linux-gnu -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE cmd/mrmetric.cpp -o tmp/cmd/mrmetric.o

failed with output

In file included from /usr/include/eigen3/unsupported/Eigen/MatrixFunctions:58:0,
                 from ./core/math/average_space.h:19,
                 from cmd/mrmetric.cpp:22:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h: In instantiation of void Eigen::internal::matrix_sqrt_quasi_triangular_2x2_off_diagonal_block(const MatrixType&, typename MatrixType::Index, typename MatrixType::Index, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>; typename MatrixType::Index = long int]:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:154:60:   required from void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:188:54:   required from void Eigen::matrix_sqrt_quasi_triangular(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:272:33:   required from static void Eigen::internal::matrix_sqrt_compute<MatrixType, 0>::run(const MatrixType&, ResultType&) [with ResultType = Eigen::Matrix<double, 4, 4>; MatrixType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:344:63:   required from void Eigen::MatrixSquareRootReturnValue<Derived>::evalTo(ResultType&) const [with ResultType = Eigen::Matrix<double, 4, 4>; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/ReturnByValue.h:62:7:   required from void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, 4, 4>; Derived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:834:7:   required from void Eigen::PlainObjectBase<Derived>::_init1(const Eigen::ReturnByValue<OtherDerived>&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; OtherDerived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/Matrix.h:296:31:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const T&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 0; int _MaxRows = 4; int _MaxCols = 4]
/usr/local/include/Eigen/src/Core/DenseBase.h:406:62:   required from Eigen::DenseBase<Derived>::EvalReturnType Eigen::DenseBase<Derived>::eval() const [with Derived = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; Eigen::DenseBase<Derived>::EvalReturnType = const Eigen::Matrix<double, 4, 4>]
src/registration/transform/base.h:253:35:   required from here
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:79:56: error: matrix_sqrt_quasi_triangular_solve_auxiliary_equation was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
   matrix_sqrt_quasi_triangular_solve_auxiliary_equation(X, A, B, C);
                                                        ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:85:6: note: template<class MatrixType> void Eigen::internal::matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType&, const MatrixType&, const MatrixType&, const MatrixType&) declared here, later in the translation unit
 void matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType& X, const MatrixType& A, const MatrixType& B, const MatrixType& C)
      ^

:
= Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 0; int _MaxRows = 4; int _MaxCols = 4]
/usr/local/include/Eigen/src/Core/DenseBase.h:406:62:   required from Eigen::DenseBase<Derived>::EvalReturnType Eigen::DenseBase<Derived>::eval() const [with Derived = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; Eigen::DenseBase<Derived>::EvalReturnType = const Eigen::Matrix<double, 4, 4>]
src/registration/transform/base.h:253:35:   required from here
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:79:56: error: matrix_sqrt_quasi_triangular_solve_auxiliary_equation was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
   matrix_sqrt_quasi_triangular_solve_auxiliary_equation(X, A, B, C);
                                                        ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:85:6: note: template<class MatrixType> void Eigen::internal::matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType&, const MatrixType&, const MatrixType&, const MatrixType&) declared here, later in the translation unit
 void matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType& X, const MatrixType& A, const MatrixType& B, const MatrixType& C)
      ^

ERROR: (  1/467) [CC] tmp/src/registration/transform/rigid.o

g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -isystem /usr/local/include -DMRTRIX_TIFF_SUPPORT -isystem /usr/include/x86_64-linux-gnu -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE src/registration/transform/rigid.cpp -o tmp/src/registration/transform/rigid.o

failed with output

In file included from /usr/include/eigen3/unsupported/Eigen/MatrixFunctions:58:0,
                 from src/registration/transform/base.h:20,
                 from src/registration/transform/rigid.h:19,
                 from src/registration/transform/rigid.cpp:19:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h: In instantiation of void Eigen::internal::matrix_sqrt_quasi_triangular_2x2_off_diagonal_block(const MatrixType&, typename MatrixType::Index, typename MatrixType::Index, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>; typename MatrixType::Index = long int]:
::Index, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>; typename MatrixType::Index = long int]:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:154:60:   required from void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:188:54:   required from void Eigen::matrix_sqrt_quasi_triangular(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:272:33:   required from static void Eigen::internal::matrix_sqrt_compute<MatrixType, 0>::run(const MatrixType&, ResultType&) [with ResultType = Eigen::Matrix<double, 4, 4>; MatrixType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:344:63:   required from void Eigen::MatrixSquareRootReturnValue<Derived>::evalTo(ResultType&) const [with ResultType = Eigen::Matrix<double, 4, 4>; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/ReturnByValue.h:62:7:   required from void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, 4, 4>; Derived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:834:7:   required from void Eigen::PlainObjectBase<Derived>::_init1(const Eigen::ReturnByValue<OtherDerived>&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; OtherDerived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/Matrix.h:296:31:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const T&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 0; int _MaxRows = 4; int _MaxCols = 4]
/usr/local/include/Eigen/src/Core/DenseBase.h:406:62:   required from Eigen::DenseBase<Derived>::EvalReturnType Eigen::DenseBase<Derived>::eval() const [with Derived = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; Eigen::DenseBase<Derived>::EvalReturnType = const Eigen::Matrix<double, 4, 4>]
src/registration/transform/base.h:253:35:   required from here
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:79:56: error: matrix_sqrt_quasi_triangular_solve_auxiliary_equation was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
   matrix_sqrt_quasi_triangular_solve_auxiliary_equation(X, A, B, C);
                                                        ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:85:6: note: template<class MatrixType> void Eigen::internal::matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType&, const MatrixType&, const MatrixType&, const MatrixType&) declared here, later in the translation unit
 void matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType& X, const MatrixType& A, const MatrixType& B, const MatrixType& C)
      ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h: In instantiation of void Eigen::internal::matrix_sqrt_quasi_triangular_2x2_off_diagonal_block(const MatrixType&, typename MatrixType::Index, typename MatrixType::Index, ResultType&) [with MatrixType = Eigen::Matrix<double, 3, 3>; ResultType = Eigen::Matrix<double, 3, 3>; typename MatrixType::Index = long int]:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:154:60:   required from void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 3, 3>; ResultType = Eigen::Matrix<double, 3, 3>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:188:54:   required from void Eigen::matrix_sqrt_quasi_triangular(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 3, 3>; ResultType = Eigen::Matrix<double, 3, 3>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:272:33:   required from static void Eigen::internal::matrix_sqrt_compute<MatrixType, 0>::run(const MatrixType&, ResultType&) [with ResultType = Eigen::Matrix<double, 3, 3>; MatrixType = Eigen::Matrix<double, 3, 3>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:344:63:   required from void Eigen::MatrixSquareRootReturnValue<Derived>::evalTo(ResultType&) const [with ResultType = Eigen::Matrix<double, 3, 3>; Derived = Eigen::Matrix<double, 3, 3>]
/usr/local/include/Eigen/src/Core/ReturnByValue.h:62:7:   required from void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, 3, 3>; Derived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:834:7:   [ skipping 14 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/local/include/Eigen/src/Core/Matrix.h:296:31:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const T&) [with T = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >; _Scalar = double; int _Rows = 3; int _Cols = 1; int _Options = 0; int _MaxRows = 3; int _MaxCols = 1]
/usr/local/include/Eigen/src/Core/AssignEvaluator.h:796:48:   required from void Eigen::internal::call_assignment(Dst&, const Src&, const Func&, typename Eigen::internal::enable_if<Eigen::internal::evaluator_assume_aliasing<Src>::value, void*>::type) [with Dst = Eigen::Matrix<double, 3, 1>; Src = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >; Func = Eigen::internal::assign_op<double, double>; typename Eigen::internal::enable_if<Eigen::internal::evaluator_assume_aliasing<Src>::value, void*>::type = void*]
/usr/local/include/Eigen/src/Core/AssignEvaluator.h:782:18:   required from void Eigen::internal::call_assignment(Dst&, const Src&) [with Dst = Eigen::Matrix<double, 3, 1>; Src = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:710:32:   required from Derived& Eigen::PlainObjectBase<Derived>::_set(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >; Derived = Eigen::Matrix<double, 3, 1>]
/usr/local/include/Eigen/src/Core/Matrix.h:225:24:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::operator=(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >; _Scalar = double; int _Rows = 3; int _Cols = 1; int _Options = 0; int _MaxRows = 3; int _MaxCols = 1]
src/registration/transform/rigid.cpp:157:19:   required from here
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:79:56: error: matrix_sqrt_quasi_triangular_solve_auxiliary_equation was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
   matrix_sqrt_quasi_triangular_solve_auxiliary_equation(X, A, B, C);
                                                        ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:85:6: note: template<class MatrixType> void Eigen::internal::matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType&, const MatrixType&, const MatrixType&, const MatrixType&) declared here, later in the translation unit
 void matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType& X, const MatrixType& A, const MatrixType& B, const MatrixType& C)
      ^
(END)
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:154:60:   required from void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:188:54:   required from void Eigen::matrix_sqrt_quasi_triangular(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:272:33:   required from static void Eigen::internal::matrix_sqrt_compute<MatrixType, 0>::run(const MatrixType&, ResultType&) [with ResultType = Eigen::Matrix<double, 4, 4>; MatrixType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:344:63:   required from void Eigen::MatrixSquareRootReturnValue<Derived>::evalTo(ResultType&) const [with ResultType = Eigen::Matrix<double, 4, 4>; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/ReturnByValue.h:62:7:   required from void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, 4, 4>; Derived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:834:7:   required from void Eigen::PlainObjectBase<Derived>::_init1(const Eigen::ReturnByValue<OtherDerived>&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matr:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:154:60:   required from void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:188:54:   required from void Eigen::matrix_sqrt_quasi_triangular(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 4, 4>; ResultType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:272:33:   required from static void Eigen::internal::matrix_sqrt_compute<MatrixType, 0>::run(const MatrixType&, ResultType&) [with ResultType = Eigen::Matrix<double, 4, 4>; MatrixType = Eigen::Matrix<double, 4, 4>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:344:63:   required from void Eigen::MatrixSquareRootReturnValue<Derived>::evalTo(ResultType&) const [with ResultType = Eigen::Matrix<double, 4, 4>; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/ReturnByValue.h:62:7:   required from void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, 4, 4>; Derived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:834:7:   required from void Eigen::PlainObjectBase<Derived>::_init1(const Eigen::ReturnByValue<OtherDerived>&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; OtherDerived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> >; Derived = Eigen::Matrix<double, 4, 4>]
/usr/local/include/Eigen/src/Core/Matrix.h:296:31:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const T&) [with T = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; _Scalar = double; int _Rows = 4; int _Cols = 4; int _Options = 0; int _MaxRows = 4; int _MaxCols = 4]
/usr/local/include/Eigen/src/Core/DenseBase.h:406:62:   required from Eigen::DenseBase<Derived>::EvalReturnType Eigen::DenseBase<Derived>::eval() const [with Derived = Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 4, 4> > >; Eigen::DenseBase<Derived>::EvalReturnType = const Eigen::Matrix<double, 4, 4>]
src/registration/transform/base.h:253:35:   required from here
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:79:56: error: matrix_sqrt_quasi_triangular_solve_auxiliary_equation was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
   matrix_sqrt_quasi_triangular_solve_auxiliary_equation(X, A, B, C);
                                                        ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:85:6: note: template<class MatrixType> void Eigen::internal::matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType&, const MatrixType&, const MatrixType&, const MatrixType&) declared here, later in the translation unit
 void matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType& X, const MatrixType& A, const MatrixType& B, const MatrixType& C)
      ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h: In instantiation of void Eigen::internal::matrix_sqrt_quasi_triangular_2x2_off_diagonal_block(const MatrixType&, typename MatrixType::Index, typename MatrixType::Index, ResultType&) [with MatrixType = Eigen::Matrix<double, 3, 3>; ResultType = Eigen::Matrix<double, 3, 3>; typename MatrixType::Index = long int]:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:154:60:   required from void Eigen::internal::matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 3, 3>; ResultType = Eigen::Matrix<double, 3, 3>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:188:54:   required from void Eigen::matrix_sqrt_quasi_triangular(const MatrixType&, ResultType&) [with MatrixType = Eigen::Matrix<double, 3, 3>; ResultType = Eigen::Matrix<double, 3, 3>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:272:33:   required from static void Eigen::internal::matrix_sqrt_compute<MatrixType, 0>::run(const MatrixType&, ResultType&) [with ResultType = Eigen::Matrix<double, 3, 3>; MatrixType = Eigen::Matrix<double, 3, 3>]
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:344:63:   required from void Eigen::MatrixSquareRootReturnValue<Derived>::evalTo(ResultType&) const [with ResultType = Eigen::Matrix<double, 3, 3>; Derived = Eigen::Matrix<double, 3, 3>]
/usr/local/include/Eigen/src/Core/ReturnByValue.h:62:7:   required from void Eigen::ReturnByValue<Derived>::evalTo(Dest&) const [with Dest = Eigen::Matrix<double, 3, 3>; Derived = Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:834:7:   [ skipping 14 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/local/include/Eigen/src/Core/Matrix.h:296:31:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const T&) [with T = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >; _Scalar = double; int _Rows = 3; int _Cols = 1; int _Options = 0; int _MaxRows = 3; int _MaxCols = 1]
/usr/local/include/Eigen/src/Core/AssignEvaluator.h:796:48:   required from void Eigen::internal::call_assignment(Dst&, const Src&, const Func&, typename Eigen::internal::enable_if<Eigen::internal::evaluator_assume_aliasing<Src>::value, void*>::type) [with Dst = Eigen::Matrix<double, 3, 1>; Src = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >; Func = Eigen::internal::assign_op<double, double>; typename Eigen::internal::enable_if<Eigen::internal::evaluator_assume_aliasing<Src>::value, void*>::type = void*]
/usr/local/include/Eigen/src/Core/AssignEvaluator.h:782:18:   required from void Eigen::internal::call_assignment(Dst&, const Src&) [with Dst = Eigen::Matrix<double, 3, 1>; Src = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >]
/usr/local/include/Eigen/src/Core/PlainObjectBase.h:710:32:   required from Derived& Eigen::PlainObjectBase<Derived>::_set(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >; Derived = Eigen::Matrix<double, 3, 1>]
/usr/local/include/Eigen/src/Core/Matrix.h:225:24:   required from Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::operator=(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0>, const Eigen::Matrix<double, 3, 1> >, const Eigen::Product<Eigen::ReturnByValue<Eigen::MatrixSquareRootReturnValue<Eigen::Matrix<double, 3, 3> > >, Eigen::Matrix<double, 3, 1>, 0> >; _Scalar = double; int _Rows = 3; int _Cols = 1; int _Options = 0; int _MaxRows = 3; int _MaxCols = 1]
src/registration/transform/rigid.cpp:157:19:   required from here
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:79:56: error: matrix_sqrt_quasi_triangular_solve_auxiliary_equation was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
   matrix_sqrt_quasi_triangular_solve_auxiliary_equation(X, A, B, C);
                                                        ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h:85:6: note: template<class MatrixType> void Eigen::internal::matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType&, const MatrixType&, const MatrixType&, const MatrixType&) declared here, later in the translation unit
 void matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType& X, const MatrixType& A, const MatrixType& B, const MatrixType& C)
      ^
(END)

Thanks for the help, again!

OK, that took us a while to spot, but if you look at the above you’ll note that it uses the Eigen3 headers from the correct system location (/usr/include), but then starts including headers from a different location (/usr/local/include). It looks like you have a different version of Eigen3 installed in /usr/local?

I note zlib also reports a location in /usr/local, so it sounds like it’s not using the default Linux Mint version of that package either. This may cause issues down the track also.

Great! I removed Eigen3 and zlib from /usr/local and now it installed and works perfectly. Thanks a lot for the help and quick replies!

Hello everyone,

I’ve got kind of the same problem as mentionned above: trying to install MRtrix3 on CentOS, I get the “error linking Qt application” message.

I tried to install OpenGL Qt5 but it didn’t work with the code sudo apt-get install libqt5opengl5 on my OS, for “sudo apt-get” isn’t a valid command.

Here is my configure.log file is it can be of any help!

Thank you for your help
E Mazerand

REPORT: 
MRtrix build type requested: release version

REPORT: Detecting OS: linux

REPORT: Looking for compiler [clang++]:
EXEC <<
CMD: clang++ --version
EXIT: 0
STDOUT:
clang version 3.4.2 (tags/RELEASE_34/dot2-final)
Target: x86_64-redhat-linux-gnu
Thread model: posix
>>


REPORT: clang version 3.4.2 (tags/RELEASE_34/dot2-final)

REPORT: Checking for C++11 compliance:

COMPILE /tmp/tmpmSEAn0.cpp:
---

#include <cstddef>
struct Base {
    Base (int);
};
struct Derived : Base {
    using Base::Base;
};

int main() {
  Derived D (int); // check for contructor inheritance
  return 0;
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC /tmp/tmpmSEAn0.cpp -o /tmp/tmpmSEAn0.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmpmSEAn0.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking shared library generation:
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC /tmp/tmp4cnauo.cpp -o /tmp/tmp4cnauo.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmp4cnauo.o -shared -Wl,--sort-common,--as-needed -pthread -o libtest.so
EXIT: 0
>>


REPORT: ok

REPORT: Detecting pointer size:

COMPILE /tmp/tmpDAe1PE.cpp:
---

#include <iostream>
int main() {
  std::cout << sizeof(void*);
  return (0);
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC /tmp/tmpDAe1PE.cpp -o /tmp/tmpDAe1PE.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmpDAe1PE.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
8
>>


REPORT: 64 bit

REPORT: Detecting byte order:

REPORT: little-endian

REPORT: Checking for variable-length array support:

COMPILE /tmp/tmpYZZojh.cpp:
---

int main(int argc, char* argv[]) {
  int x[argc];
  return 0;
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpYZZojh.cpp -o /tmp/tmpYZZojh.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmpYZZojh.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking for non-POD variable-length array support:

COMPILE /tmp/tmpXvuuFu.cpp:
---

#include <string>

class X {
  int x;
  double y;
  std::string s;
};

int main(int argc, char* argv[]) {
  X x[argc];
  return 0;
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpXvuuFu.cpp -o /tmp/tmpXvuuFu.o
EXIT: 1
STDERR:
/tmp/tmpXvuuFu.cpp:11:6: error: variable length array of non-POD element type 'X'
  X x[argc];
     ^
1 error generated.
>>

error deleting temporary file "/tmp/tmpXvuuFu.o": No such file or directory
REPORT: not found

REPORT: Checking for ::max_align_t:

COMPILE /tmp/tmpnGdKta.cpp:
---

#include <iostream>
#include <cstddef>
using ::max_align_t;
int main() {
  std::cout << alignof (max_align_t) << " bytes\n";
  return 0;
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA /tmp/tmpnGdKta.cpp -o /tmp/tmpnGdKta.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmpnGdKta.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
16 bytes
>>


REPORT: 16 bytes

REPORT: Checking for std::max_align_t:

COMPILE /tmp/tmpmFw4ox.cpp:
---

#include <iostream>
#include <cstddef>
using std::max_align_t;
int main() {
  std::cout << alignof (max_align_t) << " bytes\n";
  return 0;
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA /tmp/tmpmFw4ox.cpp -o /tmp/tmpmFw4ox.o
EXIT: 1
STDERR:
/tmp/tmpmFw4ox.cpp:4:7: error: no member named 'max_align_t' in namespace 'std'; did you mean '::max_align_t'?
using std::max_align_t;
      ^~~~~~~~~~~~~~~~
      ::max_align_t
/usr/bin/../lib/clang/3.4.2/include/stddef.h:94:3: note: '::max_align_t' declared here
} max_align_t;
  ^
1 error generated.
>>

error deleting temporary file "/tmp/tmpmFw4ox.o": No such file or directory
REPORT: not found
EXEC <<
CMD: pkg-config --cflags eigen3
EXIT: 0
STDOUT:
-I/usr/include/eigen3
>>


REPORT: Checking for Eigen3 library:

COMPILE /tmp/tmp5evLLj.cpp:
---

#include <cstddef>
#include <Eigen/Core>
#include <iostream>

int main (int argc, char* argv[]) {
  std::cout << EIGEN_WORLD_VERSION << "." << EIGEN_MAJOR_VERSION << "." << EIGEN_MINOR_VERSION << "\n";
  return 0;
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -DMRTRIX_STD_MAX_ALIGN_T_NOT_DEFINED -isystem /usr/include/eigen3 /tmp/tmp5evLLj.cpp -o /tmp/tmp5evLLj.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmp5evLLj.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
3.3.4
>>


REPORT: 3.3.4
EXEC <<
CMD: pkg-config --cflags zlib
EXIT: 0
>>

EXEC <<
CMD: pkg-config --libs zlib
EXIT: 0
STDOUT:
-lz
>>


REPORT: Checking for zlib compression library:

COMPILE /tmp/tmpjbMHkk.cpp:
---

#include <iostream>
#include <zlib.h>

int main() {
  std::cout << zlibVersion();
  return (0);
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -DMRTRIX_STD_MAX_ALIGN_T_NOT_DEFINED /tmp/tmpjbMHkk.cpp -o /tmp/tmpjbMHkk.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmpjbMHkk.o -Wl,--sort-common,--as-needed -pthread -lz -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
1.2.7
>>


REPORT: 1.2.7

REPORT: Checking for "JSON for Modern C++" requirements:

COMPILE /tmp/tmpOGqfdm.cpp:
---

#include "file/json.h"
int main (int argc, char* argv[])
{
  nlohmann::json json;
  json["key"] = "value";
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -DMRTRIX_STD_MAX_ALIGN_T_NOT_DEFINED -I/home/fsluser/mrtrix3/core /tmp/tmpOGqfdm.cpp -o /tmp/tmpOGqfdm.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmpOGqfdm.o -Wl,--sort-common,--as-needed -pthread -lz -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok
EXEC <<
CMD: pkg-config --cflags libtiff-4
EXIT: 0
>>

EXEC <<
CMD: pkg-config --libs libtiff-4
EXIT: 0
STDOUT:
-ltiff
>>


REPORT: Checking for TIFF library:

COMPILE /tmp/tmpH8VOdY.cpp:
---

#include <iostream>
#include <tiffio.h>

int main() {
  std::cout << TIFFGetVersion();
  return (0);
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -DMRTRIX_STD_MAX_ALIGN_T_NOT_DEFINED /tmp/tmpH8VOdY.cpp -o /tmp/tmpH8VOdY.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmpH8VOdY.o -Wl,--sort-common,--as-needed -pthread -lz -ltiff -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
LIBTIFF, Version 4.0.3
Copyright (c) 1988-1996 Sam Leffler
Copyright (c) 1991-1996 Silicon Graphics, Inc.
>>


REPORT: LIBTIFF, Version 4.0.3
EXEC <<
CMD: pkg-config --cflags fftw3
EXIT: 0
>>

EXEC <<
CMD: pkg-config --libs fftw3
EXIT: 0
STDOUT:
-lfftw3 -lm
>>


REPORT: Checking for FFTW library:

COMPILE /tmp/tmpvyiSHU.cpp:
---

#include <iostream>
#include <fftw3.h>

int main() {
  std::cout << fftw_version << "\n";
  return (0);
}

---
EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -DMRTRIX_STD_MAX_ALIGN_T_NOT_DEFINED -DMRTRIX_TIFF_SUPPORT /tmp/tmpvyiSHU.cpp -o /tmp/tmpvyiSHU.o
EXIT: 0
>>

EXEC <<
CMD: clang++ /tmp/tmpvyiSHU.o -Wl,--sort-common,--as-needed -pthread -lz -ltiff -lfftw3 -lm -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
fftw-3.3.3-sse2
>>


REPORT: fftw-3.3.3-sse2

REPORT: Checking for Qt moc:
EXEC <<
CMD: moc -v
EXIT: 0
STDOUT:
moc 5.12.4
>>


REPORT: moc (version 5.12.4)

REPORT: Checking for Qt qmake:
EXEC <<
CMD: qmake -v
EXIT: 0
STDOUT:
QMake version 3.1
Using Qt version 5.12.4 in /home/fsluser/Qt/5.12.4/gcc_64/lib
>>


REPORT: qmake (version 5.12.4)

REPORT: Checking for Qt rcc:
EXEC <<
CMD: rcc -v
EXIT: 0
STDOUT:
rcc 5.12.4
>>


REPORT: rcc (version 5.12.4)

REPORT: Checking for Qt:

source file "qt.h":
---
#include <QObject>

class Foo: public QObject {
  Q_OBJECT;
  public:
    Foo();
    ~Foo();
  public slots:
    void setValue(int value);
  signals:
    void valueChanged (int newValue);
  private:
    int value_;
};
---

source file "qt.cpp":
---
#include <iostream>
#include "qt.h"

Foo::Foo() : value_ (42) { connect (this, SIGNAL(valueChanged(int)), this, SLOT(setValue(int))); }

Foo::~Foo() { std::cout << qVersion() << "\n"; }

void Foo::setValue (int value) { value_ = value; }

int main() { Foo f; }
---

project file "qt.pro":
---
CONFIG += c++11
QT += core gui opengl svg
HEADERS += qt.h
SOURCES += qt.cpp
---
EXEC <<
CMD: qmake
EXIT: 0
STDOUT:
Info: creating stash file /tmp/tmpyAVhuK/.qmake.stash
>>

EXEC <<
CMD: moc qt.h -o qt_moc.cpp
EXIT: 0
>>

EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -DMRTRIX_STD_MAX_ALIGN_T_NOT_DEFINED -DMRTRIX_TIFF_SUPPORT -DEIGEN_FFTW_DEFAULT -pipe -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -isystem /home/fsluser/Qt/5.12.4/gcc_64/include -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtOpenGL -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtSvg -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtWidgets -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtGui -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtCore -isystem /usr/include/libdrm -isystem /home/fsluser/Qt/5.12.4/gcc_64/mkspecs/linux-g++ qt.cpp -o qt.o
EXIT: 0
>>

EXEC <<
CMD: clang++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_NO_NON_POD_VLA -DMRTRIX_STD_MAX_ALIGN_T_NOT_DEFINED -DMRTRIX_TIFF_SUPPORT -DEIGEN_FFTW_DEFAULT -pipe -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -isystem /home/fsluser/Qt/5.12.4/gcc_64/include -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtOpenGL -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtSvg -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtWidgets -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtGui -isystem /home/fsluser/Qt/5.12.4/gcc_64/include/QtCore -isystem /usr/include/libdrm -isystem /home/fsluser/Qt/5.12.4/gcc_64/mkspecs/linux-g++ qt_moc.cpp -o qt_moc.o
EXIT: 0
>>

EXEC <<
CMD: clang++ -Wl,--sort-common,--as-needed -pthread -lz -ltiff -lfftw3 -lm qt_moc.o qt.o -o qt -Wl,-O1 -Wl,-rpath,/home/fsluser/Qt/5.12.4/gcc_64/lib /home/fsluser/Qt/5.12.4/gcc_64/lib/libQt5OpenGL.so /home/fsluser/Qt/5.12.4/gcc_64/lib/libQt5Svg.so /home/fsluser/Qt/5.12.4/gcc_64/lib/libQt5Widgets.so /home/fsluser/Qt/5.12.4/gcc_64/lib/libQt5Gui.so /home/fsluser/Qt/5.12.4/gcc_64/lib/libQt5Core.so -lGL -lpthread
EXIT: 1
STDERR:
/usr/bin/ld: ne peut trouver -lGL
clang: error: linker command failed with exit code 1 (use -v to see invocation)
>>


ERROR: error linking Qt application!

  See the file 'configure.log' for details. If this doesn't help and you need
  further assistance, please post on the MRtrix3 community forum
  , and make sure to include the full contents of
  the 'configure.log' file.

Yes, those instructions were suitable for a Debian derivative Linux distribution (includes Ubuntu and Linux Mint) – they use the apt package management system, with package files in .deb format.

CentOS is a RedHat derivative, and as such uses a different package management system based on .rpm packages. These days, I think the recommended command to manage these packages is yum, and there will no doubt also be a graphical interface for package management somewhere. You’ll need to adjust those instructions to match your system. I’m guessing something like:

sudo yum install libqt5-opengl-dev

will do the job, but the package name will probably need to be adjusted. I assume you’ve already tried installing the packages suggested in the CentOS section of the install instructions? Those instructions might be a bit out of date for recent versions of CentOS…

Thanks for your help,
Using ‘sumo yum install libqt5-opengl-dev’ was effective.
Have a nice day.

1 Like

Hello everyone,
I tried to install MRtrix con my CentOs 7 following the Linux Installation Instructions, everything seems ok, the ./configure tool show no error, I build the binaries, set the path…all seems ok but if I launch mrview, i still got this error

mrview: relocation error: /usr/lib64/libQt5XcbQpa.so.5: symbol _ZN20QPlatformIntegration11screenAddedEP15QPlatformScreenb, version Qt_5_PRIVATE_API not defined in file libQt5Gui.so.5 with link time reference

can you help me? it seems a QT library problem i try to reinstall different version of QT 5 but no luck

I have also tried, today, a fresh install on a windows7 x64, using MSYS2 64 bit. but again, no luck. After launch ./configure i got this errors with no file configure.log to read o anything that I can do

Traceback (most recent call last):
  File "./configure", line 154, in <module>
    sys.exit (subprocess.call ([ python_cmd ] + sys.argv))
  File "C:/msys64/mingw64/lib/python3.7\subprocess.py", line 323, in call
    with Popen(*popenargs, **kwargs) as p:
  File "C:/msys64/mingw64/lib/python3.7\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "C:/msys64/mingw64/lib/python3.7\subprocess.py", line 1119, in _execute_child
    args = list2cmdline(args)
  File "C:/msys64/mingw64/lib/python3.7\subprocess.py", line 530, in list2cmdline
    needquote = (" " in arg) or ("\t" in arg) or not arg
TypeError: a bytes-like object is required, not 'str'

That’s unlucky: two unrelated issues on different platforms…


The first issue likely relates to your executablles having been linked at compile-time with a different version of the Qt library than the one that is used at runtime. Have a look at the output of:

ldd ($which mrview)

and compare to the libraries actually linked to at compile time, which you should be able to figure out from the config file – look for the -L flags in the qt_ldflags entry.

Please post both the output of the command above and the contents of your config file so we can take a look.


I can actually reproduce the second issue if I try to run the configure script using the ‘wrong’ version of the python executable. It would be quite difficult to properly explain the reason for what you’re seeing, but it relates to the idiosyncracies of MSYS2 and Windows. There are multiple versions of python installed on your system: one is a Windows-native version (located in the /mingw64/bin folder, part of the mingw-w64-x86_64-python package), the other is a Unix-compatible version (located in /usr/bin, part of the python package). They behave slightly differently, and configure will only run properly using the /usr/bin/python version. So I’ve put in a hack to detect when it’s running with the wrong version and transparently switch to the proper one – this looks like it’s not working any more…

To cut a long story short, try adding .decode(errors='ignore') at the right place in configure, line 154, so it looks like this:

    sys.exit (subprocess.call ([ python_cmd.decode(errors='ignore') ] + sys.argv))

This seems to fix the issue on my system. If that works (or doesn’t), please report back, and I’ll commit the change to the main repo.

hi
i have added the string .decode(errors='ignore') also in files build and set_path and now mrview with M2SYS, on windows, runs!! Thank you!!!.:slight_smile:

But… here you can find the output requested from CentOs 7 version… where i have the QT library problems

ldd mrview (from path where i have installed mrview)

linux-vdso.so.1 => (0x00007ffe727bf000)
libmrtrix.so => /home/daniela/mrtrix3/bin/./…/lib/libmrtrix.so (0x00007f3fc8845000)
libQt5Widgets.so.5 => /opt/Qt/5.13.0/gcc_64/lib/libQt5Widgets.so.5 (0x00007f3fc7ff2000)
libQt5Gui.so.5 => /opt/Qt/5.13.0/gcc_64/lib/libQt5Gui.so.5 (0x00007f3fc77a5000)
libQt5Core.so.5 => /opt/Qt/5.13.0/gcc_64/lib/libQt5Core.so.5 (0x00007f3fc6ff8000)
libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007f3fc6d6c000)
libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f3fc6b50000)
libstdc++.so.6 => /usr/local/lib64/libstdc++.so.6 (0x00007f3fc67ce000)
libm.so.6 => /usr/lib64/libm.so.6 (0x00007f3fc64cc000)
libgcc_s.so.1 => /usr/local/lib64/libgcc_s.so.1 (0x00007f3fc62b5000)
libc.so.6 => /usr/lib64/libc.so.6 (0x00007f3fc5ee8000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3fc8c66000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00007f3fc5cd2000)
libtiff.so.5 => /usr/lib64/libtiff.so.5 (0x00007f3fc5a5e000)
libicui18n.so.56 => /opt/Qt/5.13.0/gcc_64/lib/libicui18n.so.56 (0x00007f3fc55c5000)
libicuuc.so.56 => /opt/Qt/5.13.0/gcc_64/lib/libicuuc.so.56 (0x00007f3fc520d000)
libicudata.so.56 => /opt/Qt/5.13.0/gcc_64/lib/libicudata.so.56 (0x00007f3fc382a000)
libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f3fc3626000)
libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007f3fc3424000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f3fc310e000)
libGLX.so.0 => /usr/lib64/libGLX.so.0 (0x00007f3fc2edc000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f3fc2b9e000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f3fc298c000)
libGLdispatch.so.0 => /usr/lib64/libGLdispatch.so.0 (0x00007f3fc26d6000)
libjbig.so.2.0 => /usr/lib64/libjbig.so.2.0 (0x00007f3fc24ca000)
libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x00007f3fc2275000)
libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007f3fc2013000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f3fc1deb000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f3fc1be7000)

and my config file (qt_ldflags entry); I cannot see any -L flag… did you mean ‘-lGL’ in the last line?

qt_ldflags = [ ‘-Wl,-O1’, ‘-Wl,-rpath,/opt/Qt/5.13.0/gcc_64/lib’, ‘/opt/Qt/5.13.0/gcc_64/lib/libQt5OpenGL.so’, ‘/opt/Qt/5.13.0/gcc_64/lib/libQt5Svg.so’, ‘/opt/Qt/5.13.0/gcc_64/lib/libQt5Widgets.so’, ‘/opt/Qt/5.13.0/gcc_64/lib/libQt5Gui.so’, ‘/opt/Qt/5.13.0/gcc_64/lib/libQt5Core.so’, ‘-lGL’, ‘-lpthread’ ]

Good to hear. I’ll commit that when I have a minute.

Ok, indeed, no -L flags, they’re linking to the libraries directly – I didn’t even know you could do that…

No matter, clearly that’s not the issue: all the libraries listed match. But they don’t match with the library that’s causing the issue:

/usr/lib64/libQt5XcbQpa.so.5

So there clearly is a mismatch there, but the library above isn’t one that is required at launch. So it’s likely to be one of Qt’s plugins, which get loaded dynamically later. Indeed, if you search for “Qt xcb plugin”, you’ll see a lot of related issues… Basically, this means there’s something not quite right with your Qt install, and it ends up trying to load the plugin from the main system Qt5 install (located in /usr/lib64) instead of the matching version (from /opt/Qt/5.13.0), leading to the error you’re seeing.

So you could try to fix up your Qt install in /opt, though I’m not sure how. Qt can get a bit fiddly with its plugins. Alternatively, if your system already comes with Qt5 installed, why not simply remove the non-standard version in /opt and use the official version supplied by your distro?

Hi,

Also encountering this problem with Qt when trying to install mrtrix3 on Ubuntu 18.04.

First, installed dependencies with

$ sudo apt-get install git g++ python python-numpy libeigen3-dev zlib1g-dev libqt4-opengl-dev libgl1-mesa-dev libfftw3-dev libtiff5-dev

Got an error message in the configure.log file: ERROR: error linking Qt application!
Found this post and ran

$ sudo apt-get install libqt5opengl-dev

However, I keep getting the same error message. Here is the configure.log file

$ cat configure.log 

REPORT: 
MRtrix build type requested: release version

REPORT: Detecting OS: linux

REPORT: Looking for compiler [clang++]:
EXEC <<
CMD: clang++ --version
error invoking command "clang++": No such file or directory
>>


REPORT: not found

REPORT: Looking for compiler [g++]:
EXEC <<
CMD: g++ --version
EXIT: 0
STDOUT:
g++ (Ubuntu 6.5.0-2ubuntu1~18.04) 6.5.0 20181026
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>>


REPORT: g++ (Ubuntu 6.5.0-2ubuntu1~18.04) 6.5.0 20181026

REPORT: Checking for C++11 compliance:

COMPILE /tmp/tmpy6szWu.cpp:
---

#include <cstddef>
struct Base {
    Base (int);
};
struct Derived : Base {
    using Base::Base;
};

int main() {
  Derived D (int); // check for contructor inheritance
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC /tmp/tmpy6szWu.cpp -o /tmp/tmpy6szWu.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpy6szWu.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking shared library generation:
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC /tmp/tmpaN8Oek.cpp -o /tmp/tmpaN8Oek.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpaN8Oek.o -shared -Wl,--sort-common,--as-needed -pthread -o libtest.so
EXIT: 0
>>


REPORT: ok

REPORT: Detecting pointer size:

COMPILE /tmp/tmpufaqC3.cpp:
---

#include <iostream>
int main() {
  std::cout << sizeof(void*);
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC /tmp/tmpufaqC3.cpp -o /tmp/tmpufaqC3.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpufaqC3.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
8
>>


REPORT: 64 bit

REPORT: Detecting byte order:

REPORT: little-endian

REPORT: Checking for variable-length array support:

COMPILE /tmp/tmpIjeL6h.cpp:
---

int main(int argc, char* argv[]) {
  int x[argc];
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpIjeL6h.cpp -o /tmp/tmpIjeL6h.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpIjeL6h.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking for non-POD variable-length array support:

COMPILE /tmp/tmpdftVVl.cpp:
---

#include <string>

class X {
  int x;
  double y;
  std::string s;
};

int main(int argc, char* argv[]) {
  X x[argc];
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpdftVVl.cpp -o /tmp/tmpdftVVl.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpdftVVl.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok

REPORT: Checking for ::max_align_t:

COMPILE /tmp/tmpZIYdIN.cpp:
---

#include <iostream>
#include <cstddef>
using ::max_align_t;
int main() {
  std::cout << alignof (max_align_t) << " bytes\n";
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpZIYdIN.cpp -o /tmp/tmpZIYdIN.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpZIYdIN.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
16 bytes
>>


REPORT: 16 bytes

REPORT: Checking for std::max_align_t:

COMPILE /tmp/tmpQU6zKk.cpp:
---

#include <iostream>
#include <cstddef>
using std::max_align_t;
int main() {
  std::cout << alignof (max_align_t) << " bytes\n";
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpQU6zKk.cpp -o /tmp/tmpQU6zKk.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpQU6zKk.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
16 bytes
>>


REPORT: 16 bytes
EXEC <<
CMD: pkg-config --cflags eigen3
EXIT: 0
STDOUT:
-I/usr/include/eigen3
>>


REPORT: Checking for Eigen3 library:

COMPILE /tmp/tmpBCwctk.cpp:
---

#include <cstddef>
#include <Eigen/Core>
#include <iostream>

int main (int argc, char* argv[]) {
  std::cout << EIGEN_WORLD_VERSION << "." << EIGEN_MAJOR_VERSION << "." << EIGEN_MINOR_VERSION << "\n";
  return 0;
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -idirafter /usr/include/eigen3 /tmp/tmpBCwctk.cpp -o /tmp/tmpBCwctk.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpBCwctk.o -Wl,--sort-common,--as-needed -pthread -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
3.3.4
>>


REPORT: 3.3.4
EXEC <<
CMD: pkg-config --cflags zlib
EXIT: 0
>>

EXEC <<
CMD: pkg-config --libs zlib
EXIT: 0
STDOUT:
-lz
>>


REPORT: Checking for zlib compression library:

COMPILE /tmp/tmpCJWukV.cpp:
---

#include <iostream>
#include <zlib.h>

int main() {
  std::cout << zlibVersion();
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 /tmp/tmpCJWukV.cpp -o /tmp/tmpCJWukV.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpCJWukV.o -Wl,--sort-common,--as-needed -pthread -lz -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
1.2.11
>>


REPORT: 1.2.11

REPORT: Checking for "JSON for Modern C++" requirements:

COMPILE /tmp/tmpNfFcko.cpp:
---

#include "file/json.h"
int main (int argc, char* argv[])
{
  nlohmann::json json;
  json["key"] = "value";
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -I/home/finn/Software/mrtrix3/core /tmp/tmpNfFcko.cpp -o /tmp/tmpNfFcko.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpNfFcko.o -Wl,--sort-common,--as-needed -pthread -lz -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
>>


REPORT: ok
EXEC <<
CMD: pkg-config --cflags libtiff-4
EXIT: 0
STDOUT:
-I/usr/include/x86_64-linux-gnu
>>

EXEC <<
CMD: pkg-config --libs libtiff-4
EXIT: 0
STDOUT:
-ltiff
>>


REPORT: Checking for TIFF library:

COMPILE /tmp/tmpwUxj6u.cpp:
---

#include <iostream>
#include <tiffio.h>

int main() {
  std::cout << TIFFGetVersion();
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -idirafter /usr/include/x86_64-linux-gnu /tmp/tmpwUxj6u.cpp -o /tmp/tmpwUxj6u.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpwUxj6u.o -Wl,--sort-common,--as-needed -pthread -lz -ltiff -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
LIBTIFF, Version 4.0.9
Copyright (c) 1988-1996 Sam Leffler
Copyright (c) 1991-1996 Silicon Graphics, Inc.
>>


REPORT: LIBTIFF, Version 4.0.9
EXEC <<
CMD: pkg-config --cflags fftw3
EXIT: 0
>>

EXEC <<
CMD: pkg-config --libs fftw3
EXIT: 0
STDOUT:
-lfftw3
>>


REPORT: Checking for FFTW library:

COMPILE /tmp/tmpnXXy43.cpp:
---

#include <iostream>
#include <fftw3.h>

int main() {
  std::cout << fftw_version << "\n";
  return (0);
}

---
EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_TIFF_SUPPORT -idirafter /usr/include/x86_64-linux-gnu /tmp/tmpnXXy43.cpp -o /tmp/tmpnXXy43.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpnXXy43.o -Wl,--sort-common,--as-needed -pthread -lz -ltiff -lfftw3 -o a.out
EXIT: 0
>>

EXEC <<
CMD: ./a.out
EXIT: 0
STDOUT:
fftw-3.3.7-sse2-avx
>>


REPORT: fftw-3.3.7-sse2-avx

REPORT: Checking for Qt moc:
EXEC <<
CMD: moc -v
EXIT: 1
STDERR:
Qt Meta Object Compiler version 63 (Qt 4.8.7)
>>


REPORT: moc (version 4.8.7)

REPORT: Checking for Qt qmake:
EXEC <<
CMD: qmake -v
EXIT: 0
STDOUT:
QMake version 2.01a
Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu
>>


REPORT: qmake (version 4.8.7)

REPORT: Checking for Qt rcc:
EXEC <<
CMD: rcc -v
EXIT: 1
STDERR:
Qt Resource Compiler version 4.8.7
>>


REPORT: rcc (version 4.8.7)

REPORT: Checking for Qt:

source file "qt.h":
---
#include <QObject>

class Foo: public QObject {
  Q_OBJECT;
  public:
    Foo();
    ~Foo();
  public slots:
    void setValue(int value);
  signals:
    void valueChanged (int newValue);
  private:
    int value_;
};
---

source file "qt.cpp":
---
#include <iostream>
#include "qt.h"

Foo::Foo() : value_ (42) { connect (this, SIGNAL(valueChanged(int)), this, SLOT(setValue(int))); }

Foo::~Foo() { std::cout << qVersion() << "\n"; }

void Foo::setValue (int value) { value_ = value; }

int main() { Foo f; }
---

project file "qt.pro":
---
CONFIG += c++11
QT += core gui opengl svg
HEADERS += qt.h
SOURCES += qt.cpp
---
EXEC <<
CMD: qmake
EXIT: 0
>>

EXEC <<
CMD: moc qt.h -o qt_moc.cpp
EXIT: 0
>>

EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_TIFF_SUPPORT -idirafter /usr/include/x86_64-linux-gnu -DEIGEN_FFTW_DEFAULT -m64 -pipe -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -idirafter /usr/share/qt4/mkspecs/linux-g++-64 -idirafter /usr/include/qt4/QtCore -idirafter /usr/include/qt4/QtGui -idirafter /usr/include/qt4/QtOpenGL -idirafter /usr/include/qt4/QtSvg -idirafter /usr/include/qt4 -idirafter /usr/X11R6/include qt.cpp -o qt.o
EXIT: 0
>>

EXEC <<
CMD: g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_TIFF_SUPPORT -idirafter /usr/include/x86_64-linux-gnu -DEIGEN_FFTW_DEFAULT -m64 -pipe -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -idirafter /usr/share/qt4/mkspecs/linux-g++-64 -idirafter /usr/include/qt4/QtCore -idirafter /usr/include/qt4/QtGui -idirafter /usr/include/qt4/QtOpenGL -idirafter /usr/include/qt4/QtSvg -idirafter /usr/include/qt4 -idirafter /usr/X11R6/include qt_moc.cpp -o qt_moc.o
EXIT: 0
>>

EXEC <<
CMD: g++ -Wl,--sort-common,--as-needed -pthread -lz -ltiff -lfftw3 qt_moc.o qt.o -o qt -m64 -Wl,-O1 -L/usr/lib/x86_64-linux-gnu -L/usr/X11R6/lib64 -lQtSvg -lQtOpenGL -lQtGui -lQtCore -lGL -lpthread
EXIT: 1
STDERR:
/usr/bin/x86_64-linux-gnu-ld: cannot find -lGL
collect2: error: ld returned 1 exit status
>>


ERROR: error linking Qt application!

  See the file 'configure.log' for details. If this doesn't help and you need
  further assistance, please post on the MRtrix3 community forum
  (http://community.mrtrix.org/), and make sure to include the full contents of
  the 'configure.log' file.

Help appreciated. Thanks in advance!
Finn

This is a different problem, but it looks like you’re not alone. Solution suggested here is to install the package libglvnd-dev.

Well, I had already the libglvnd-dev package installed. And re-installing it didn’t help.

Instead I discovered this post which concerned similar problems with NVIDIA cards and Ubuntu. As in the post, I found that I had a broken link

$ ls -l /usr/lib/x86_64-linux-gnu/libGL.so
lrwxrwxrwx 1 root root 14 maj 10 14:17 /usr/lib/x86_64-linux-gnu/libGL.so → libGL.so.1.0.0

where the target /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0 did not exist.

The latest comment in the above post related to Ubuntu 18.04 and corresponded to my problem.

So I simply tried to replicate that by deleting the symbolic link /usr/lib/x86_64-linux-gnu/libGL.so, which was pointing to the non-existing /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0, and then created as new link pointing at the existing /usr/lib/x86_64-linux-gnu/libGL.so.1. I.e.

sudo rm /usr/lib/x86_64-linux-gnu/libGL.so sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so

Compared to the original post I found that /usr/lib/libGL.so.1 was actually a symbolic link pointing at /usr/lib/x86_64-linux-gnu/libGL.so.1, so I chose the symbolic link /usr/lib/x86_64-linux-gnu/libGL.so to point at this instead as above.

After this I could run ./configure with errors, and then build the binaries.

1 Like