Error in ./build with ubunto 16.04

Hi,
I’m trying to install MRtrix on ubunto 16.04 after the ./configure step, I got error in ./build, as shown below in the build.log file:

ERROR: (335/506) [LB] bin/mrview

ERROR: (335/506) [LB] bin/mrview

g++-4.9 tmp/src/dwi/tractography/rng.o tmp/src/gui/mrview/tool/roi_editor/roi_moc.o tmp/src/gui/mrview/mode/base.o tmp/src/surface/polygon.o tmp/src/gui/mrview/tool/fixel/directory.o tmp/src/gui/mrview/colourmap_button.o tmp/src/gui/dialog/file.o tmp/src/surface/freesurfer.o tmp/src/gui/mrview/mode/lightbox_moc.o tmp/src/gui/shapes/cube.o tmp/src/gui/mrview/tool/odf/preview_moc.o tmp/src/gui/mrview/mode/ortho.o tmp/src/gui/dialog/report_exception.o tmp/src/gui/dwi/render_frame.o tmp/src/gui/mrview/mode/slice.o tmp/src/dwi/gradient.o tmp/src/gui/projection.o tmp/src/gui/lighting_dock.o tmp/src/gui/mrview/tool/tractography/tractogram.o tmp/src/gui/mrview/mode/ortho_moc.o tmp/src/gui/lighting_dock_moc.o tmp/src/gui/cursor.o tmp/src/gui/mrview/tool/overlay_moc.o tmp/src/gui/mrview/tool/roi_editor/model.o tmp/src/gui/mrview/displayable_moc.o tmp/src/dwi/tractography/properties.o tmp/src/dwi/tractography/file_base.o tmp/src/gui/dialog/dialog.o tmp/src/gui/shapes/halfsphere.o tmp/src/gui/shapes/cylinder.o tmp/src/exec_version.o tmp/src/surface/mesh_multi.o tmp/src/gui/mrview/tool/connectome/node_list.o tmp/src/gui/mrview/tool/connectome/node_overlay.o tmp/src/gui/mrview/tool/odf/item.o tmp/src/gui/mrview/tool/screen_capture.o tmp/src/gui/mrview/tool/tractography/tractography.o tmp/src/gui/color_button_moc.o tmp/src/gui/mrview/tool/view.o tmp/src/gui/mrview/mode/lightbox.o tmp/src/gui/mrview/tool/roi_editor/item.o tmp/src/dwi/directions/set.o tmp/src/gui/mrview/tool/fixel/image4D.o tmp/src/gui/mrview/tool/fixel/fixel_moc.o tmp/src/gui/mrview/tool/overlay.o tmp/src/gui/dialog/opengl.o tmp/src/gui/opengl/gl.o tmp/src/gui/mrview/tool/connectome/file_data_vector.o tmp/src/gui/mrview/tool/odf/odf_moc.o tmp/src/gui/mrview/tool/screen_capture_moc.o tmp/src/surface/scalar.o tmp/src/gui/mrview/adjust_button_moc.o tmp/src/gui/mrview/tool/odf/model.o tmp/src/gui/mrview/tool/connectome/node_list_moc.o tmp/src/gui/opengl/gl_core_3_3.o tmp/src/gui/mrview/spin_box_moc.o tmp/cmd/mrview.o tmp/src/dwi/tractography/roi.o tmp/src/gui/mrview/tool/tractography/tractography_moc.o tmp/src/gui/mrview/tool/fixel/base_fixel.o tmp/src/gui/mrview/tool/connectome/matrix_list.o tmp/src/gui/mrview/tool/connectome/selection_moc.o tmp/src/gui/mrview/window_moc.o tmp/src/gui/opengl/lighting_moc.o tmp/src/connectome/connectome.o tmp/src/gui/mrview/tool/fixel/legacy.o tmp/src/gui/mrview/displayable.o tmp/src/gui/mrview/icons.o tmp/src/gui/opengl/lighting.o tmp/src/dwi/tractography/seeding/list.o tmp/src/gui/dialog/list.o tmp/src/gui/mrview/tool/odf/odf.o tmp/src/gui/mrview/tool/tractography/track_scalar_file_moc.o tmp/src/gui/opengl/shader.o tmp/src/dwi/shells.o tmp/src/connectome/lut.o tmp/src/gui/mrview/tool/connectome/selection.o tmp/src/gui/mrview/tool/connectome/node.o tmp/src/gui/mrview/gui_image.o tmp/src/gui/mrview/tool/fixel/fixel.o tmp/src/gui/dialog/image_properties.o tmp/src/dwi/directions/predefined.o tmp/src/gui/mrview/tool/view_moc.o tmp/src/gui/mrview/tool/tractography/tractogram_moc.o tmp/src/gui/shapes/sphere.o tmp/src/gui/dialog/progress.o tmp/src/gui/dialog/image_properties_moc.o tmp/src/gui/mrview/window.o tmp/src/gui/mrview/tool/connectome/edge.o tmp/src/gui/mrview/tool/odf/preview.o tmp/src/gui/dwi/renderer.o tmp/src/gui/mrview/mode/volume.o tmp/src/gui/mrview/tool/roi_editor/roi.o tmp/src/gui/opengl/font.o tmp/src/gui/mrview/adjust_button.o tmp/src/gui/mrview/combo_box_error_moc.o tmp/src/gui/crosshair.o tmp/src/gui/gui.o tmp/src/gui/mrview/tool/connectome/colourmap_observers.o tmp/src/gui/mrview/tool/connectome/connectome.o tmp/src/gui/mrview/tool/roi_editor/undoentry.o tmp/src/surface/mesh.o tmp/src/gui/dwi/render_frame_moc.o tmp/src/gui/mrview/colourmap_button_moc.o tmp/src/gui/color_button.o tmp/src/gui/mrview/tool/tractography/track_scalar_file.o tmp/src/gui/mrview/tool/connectome/connectome_moc.o tmp/src/gui/gui_moc.o tmp/src/gui/mrview/combo_box_error.o tmp/src/gui/dialog/dicom.o tmp/src/gui/mrview/volume.o tmp/src/gui/mrview/colourmap.o tmp/src/gui/mrview/tool/connectome/shaders.o tmp/src/gui/mrview/tool/base.o -lmrtrix -Wl,--sort-common,--as-needed -pthread -lz -ltiff -lfftw3 -Wl,-rpath,$ORIGIN/../lib -L./lib -Wl,-O1 -Wl,-rpath,/home/brain/miniconda3/lib -L/home/brain/miniconda3/lib -lQt5OpenGL -lQt5Svg -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread -o bin/mrview

failed with output

./lib/libmrtrix.so: undefined reference to `TIFFReadDirectory@LIBTIFF_4.0'
./lib/libmrtrix.so: undefined reference to `TIFFScanlineSize@LIBTIFF_4.0'
./lib/libmrtrix.so: undefined reference to `TIFFClose@LIBTIFF_4.0'
./lib/libmrtrix.so: undefined reference to `TIFFGetFieldDefaulted@LIBTIFF_4.0'
./lib/libmrtrix.so: undefined reference to `TIFFOpen@LIBTIFF_4.0'
./lib/libmrtrix.so: undefined reference to `TIFFSetWarningHandler@LIBTIFF_4.0'
./lib/libmrtrix.so: undefined reference to `TIFFReadScanline@LIBTIFF_4.0'
./lib/libmrtrix.so: undefined reference to `TIFFFileName@LIBTIFF_4.0'
collect2: error: ld returned 1 exit status

could you please help me in this issue.
Thank you in advance.

This looks like interference from the miniconda project, causing similar issues to anaconda (the clue is that -L/home/brain/miniconda3/lib flag in the command). We have so far found anaconda to cause lots of issues with the MRtrix3 install, and I guess miniconda will likewise cause trouble. We actually try to detect the anaconda issue in the configure script, which avoids trouble from that project, but we haven’t yet introduced safeguards for miniconda.

The simplest solution is probably to extend the anaconda tests to also detect miniconda, which can be done by modifying line 250 of configure to the following:

   if 'anaconda' not in entry.lower() and 'miniconda' not in entry.lower():                                                                                                                                                               

Hopefully that will fix the issue…

Please report back either way – if it works, I’ll commit that change upstream.


I’ll take the opportunity to put a call out for help: if anyone is familiar with anaconda or miniconda, it looks like it might be possible to build MRtrix3 fully within those projects, and potentially ship precompiled versions for them. I have a feeling a lot of people would be interested, but we would need someone willing to help set this up and maintain it when required…

Thank you jdtournier for the reply. I changed the line 250 as you mentioned, however it does not resolve this issue.

OK, can you post the full contents of your configure.log file?

REPORT: 
MRtrix build type requested: release version

REPORT: WARNING: Anaconda removed from PATH to avoid conflicts

REPORT: Detecting OS: linux

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


REPORT: not found

REPORT: Looking for compiler [g++]:
EXEC <<
CMD: g++ --version
EXIT: 0
STDOUT:
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.12) 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.12) 5.4.0 20160609

REPORT: Checking for C++11 compliance:

COMPILE /tmp/tmpl27pgwq8.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/tmpl27pgwq8.cpp -o /tmp/tmpl27pgwq8.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpl27pgwq8.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/tmpdy9w7p3d.cpp -o /tmp/tmpdy9w7p3d.o
EXIT: 0
>>

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


REPORT: ok

REPORT: Detecting pointer size:

COMPILE /tmp/tmpqgluaw6j.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/tmpqgluaw6j.cpp -o /tmp/tmpqgluaw6j.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpqgluaw6j.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/tmp95o354kj.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/tmp95o354kj.cpp -o /tmp/tmp95o354kj.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmp95o354kj.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/tmp14l91ol5.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/tmp14l91ol5.cpp -o /tmp/tmp14l91ol5.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmp14l91ol5.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/tmpfwf3d_3d.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/tmpfwf3d_3d.cpp -o /tmp/tmpfwf3d_3d.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpfwf3d_3d.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/tmpztvm5gof.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/tmpztvm5gof.cpp -o /tmp/tmpztvm5gof.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpztvm5gof.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/tmp3z7sugup.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/tmp3z7sugup.cpp -o /tmp/tmp3z7sugup.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmp3z7sugup.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
>>

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


REPORT: Checking for zlib compression library:

COMPILE /tmp/tmpjiti021x.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/tmpjiti021x.cpp -o /tmp/tmpjiti021x.o
EXIT: 0
>>

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

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


REPORT: 1.2.8

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

COMPILE /tmp/tmprqchp3v5.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/brain/Downloads/DWI_sample/mrtrix3/core /tmp/tmprqchp3v5.cpp -o /tmp/tmprqchp3v5.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmprqchp3v5.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/tmpol63vcp7.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/tmpol63vcp7.cpp -o /tmp/tmpol63vcp7.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpol63vcp7.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.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/tmpaxi1lgfy.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/tmpaxi1lgfy.cpp -o /tmp/tmpaxi1lgfy.o
EXIT: 0
>>

EXEC <<
CMD: g++ /tmp/tmpaxi1lgfy.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.4-sse2-avx
>>


REPORT: fftw-3.3.4-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: 0
>>

EXEC <<
CMD: /tmp/tmpsx3u1l_4/qt
EXIT: 0
STDOUT:
4.8.7
>>


REPORT: 4.8.7

OK, I don’t see anything wrong here. Somehow this ended up in the failing command:

-Wl,-rpath,/home/brain/miniconda3/lib -L/home/brain/miniconda3/lib

but I don’t see any mention of it in your configure.log… I struggle to think of what might have caused this.

One option is that the LD or CXX environment variables might be set (anaconda has a tendency of doing this), and this can interfere with our build. What do echo $CXX and echo $LD return? If they return anything, try clearing them (unset LD CXX), then run ./configure & ./build again.

Thank you jdtournier, I think the problem is solved now. I can make ./build now

Good to hear. Could you confirm what it was that fixed it, and mark the problem as solved? Thanks!

In fact, this solution is worked, but we need to close the terminal and start another one.