I know that there are many questions about this kind of errors, but I cannot find a solution for my issue. I have downloaded and installed by cmake the Armadillo library.
I am trying to compile the example code:
#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
int main()
{
mat A(4, 5, fill::randu);
mat B(4, 5, fill::randu);
cout << A*B.t() << endl;
return 0;
}
with the command g++ example.cpp -o example -std=c++14 -larmadillo as suggested by the documentation of the library. Also I have successfully installed lapack and blas with commands like apt install liblapack-dev and similar.
But I recieve the following complex error:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_dposv'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_cposv'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_spotri'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_dgetrf'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_cgetri'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_dpotri'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_sgesv'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_sgetrf'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_sposv'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_cgesv'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_cgetrf'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_zgetri'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_cpotri'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_zpotrf'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_zgesv'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_spotrf'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_dgetri'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_zposv'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_dgesv'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_cpotrf'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_zpotri'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_dpotrf'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_sgetri'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libarmadillo.so: undefined reference to `clapack_zgetrf'
collect2: error: ld returned 1 exit status
I have also tried to modify the code just using a hello world file including armadillo and it compiles without problems. Also, if I just use matrices full of zeros or ones and I want to print them, there are no problems. It like armadillo cannot comunicate with the related libraries.