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