Error Linking QT application

error

#1

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.


#2

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.


#3

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.


#4

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


#5

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!


#6

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.


#7

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!