Вопрос

Когда я пытаюсь скомпилировать файл example1.cpp, который поставляется с Armadillo 2.4.2, я постоянно получаю следующую ошибку компоновки:

/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

Может ли кто-нибудь помочь?я вручную установил

  • последняя версия БЛАС
  • лапак-3.4.0
  • повышение-1.48.0
  • последняя версия АТЛАС

Я использую Ubuntu 11.04 на модели MacBook Pro 7,1.

Это было полезно?

Решение

Большое спасибо, чтобы ОСГХ!Прочитав его комментарий, я занял второй взгляд на файл readme!Оказывается, мне не хватало '-O1 -larmadillo' в команду!

Вот команда, которую я использовал для его работы:

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

Глупучая ошибка, я знаю .... просто напоминает вам, насколько важно читать readme.

readme также упоминает:

Если вы получите ссылки на ошибки, или если Armadillo был установлен вручную и вы указали, что Lapack и BLAS доступны, вы будете надо явную связь с лапаком и BLAS (или их эквиваленты), Например:

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

Мне не нужно было включить '-llapack -lblas', но, возможно, это поможет кому-то еще, у кого есть похожие проблемы.

Другие советы

Есть странность, которую я только что обнаружил, сравнивая ранее работающие компиляции кода с самой проблемой этой темы, подчеркивая участие GNU CC (я не эксперт в этом): на моем компиляции машины успех зависит от заказапараметров к GCC / G ++ где G ++ Infile-Outfile -libarmadillo ... Работал, но G ++ -Libarmadillo Infile-Outfile ... не с (почти) ту же ошибка, как упомянуто выше. (Надеюсь, что помогает).

По состоянию на 5.0.0 (может также относиться к более ранним версиям)

Вам действительно нужно -larmadillo, на Федора 21 -llapack и -lopenblas больше не являются явно необходимыми.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top