Pregunta

Cuando intento compilar example1.cpp que viene con Armadillo 2.4.2, sigo obteniendo el siguiente error de enlace:

/tmp/ccbnLbA0.o: In function `double arma::blas::dot<double>(unsigned int, double const*, double const*)':
main.cpp:(.text._ZN4arma4blas3dotIdEET_jPKS2_S4_[double arma::blas::dot<double>(unsigned int, double const*, double const*)]+0x3b): undefined reference to `wrapper_ddot_'
/tmp/ccbnLbA0.o: In function `void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)':
main.cpp:(.text._ZN4arma4blas4gemvIdEEvPKcPKiS5_PKT_S8_S5_S8_S5_S8_PS6_S5_[void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)]+0x68): undefined reference to `wrapper_dgemv_'
/tmp/ccbnLbA0.o: In function `void arma::blas::gemm<double>(char const*, char const*, int const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)':
main.cpp:(.text._ZN4arma4blas4gemmIdEEvPKcS3_PKiS5_S5_PKT_S8_S5_S8_S5_S8_PS6_S5_[void arma::blas::gemm<double>(char const*, char const*, int const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)]+0x7a): undefined reference to `wrapper_dgemm_'
collect2: ld returned 1 exit status

¿Puede alguien ayudar?I manualmente instalé

  • Última versión de Blas
  • lapack-3.4.0
  • Boost-1.48.0
  • Última versión de Atlas

    Estoy usando Ubuntu 11.04 en el modelo MacBook Pro 7,1

¿Fue útil?

Solución

¡Muchas gracias a OSGX!Después de leer su comentario, ¡tomé un segundo vistazo al archivo README!Resulta que me faltaba '-O1 -Larmadillo' en el comando!

Aquí está el comando que solía hacerlo funcionando:

g++ example1.cpp -o example1 -O1 -larmadillo

Error estúpido, lo sé ... Sólo va a recordarle lo importante que es leer el Readme.

El readme también menciona:

Si obtiene errores de vinculación, o si se instaló Armadillo manualmente y especificó que Lapack y Blas están disponibles, lo harás Necesidad de enlazar explícitamente con Lapack y Blas (o sus equivalentes), Por ejemplo:

g++ example1.cpp -o example1 -O1 -llapack -lblas

No tenía que incluir '-llapack -lblas', pero tal vez esto ayudará a alguien más que tiene problemas similares.

Otros consejos

Hay una rareza que acabo de descubrir comparando las compilaciones de código previamente de trabajo con el problema de este hilo, destacando la participación del GNU CC (no soy experto en esto): en mi compilación de la máquina el éxito depende del ordende parámetros al gcc / g ++ donde G ++ Infile -o Outfile -Libarmadillo ... trabajó, pero G ++ -Libarmadillo Infile -o Outfile ... no fue con (casi) el mismo error que se mencionó anteriormente. (Espero que eso ayude).

a partir de 5.0.0 (también puede aplicarse a versiones anteriores)

En realidad, necesita -larmadillo, en fedora 21 -llapack y -lopenblas, ya no es necesario,

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top