2016-12-24 2 views
2

내가 아르마딜로를 컴파일하려고 다음과 같은 오류가 : 나는 메이크 파일을 사용하여 컴파일하고 있습니다오류 컴파일 아르마딜로

Undefined symbols for architecture x86_64: 
    "_wrapper_ddot_", referenced from: 
     void arma::syrk_vec<true, false, false>::apply<double, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, double, double) in exampleArma.o 
     void arma::syrk_vec<true, false, false>::apply<double, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, double, double) in exampleArma.o 
    "_wrapper_dgemm_", referenced from: 
     void arma::gemm<true, false, false, false>::apply_blas_type<double, arma::Mat<double>, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double, double) in exampleArma.o 
     void arma::gemm<true, false, false, false>::apply_blas_type<double, arma::Row<double>, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, arma::Row<double> const&, double, double) in exampleArma.o 
    "_wrapper_dgemv_", referenced from: 
     void arma::glue_times::apply<double, true, false, false, arma::Mat<double>, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double) in exampleArma.o 
     void arma::glue_times::apply<double, true, false, false, arma::Row<double>, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, arma::Row<double> const&, double) in exampleArma.o 
    "_wrapper_dsyrk_", referenced from: 
     void arma::syrk<true, false, false>::apply_blas_type<double, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, double, double) in exampleArma.o 
     void arma::syrk<true, false, false>::apply_blas_type<double, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, double, double) in exampleArma.o 

을 그리고 난 이미 더 좋은 결과와 함께 여기에있는 솔루션을 시도했다. 지금까지 나의 프로젝트는 makefile로 컴파일 된 다른 클래스를 가지고있다. 두 명은 아르마딜로를 사용합니다. 첫 번째 것은 아무런 문제도 보이지 않습니다. 대신이 새로운 클래스는 컴파일 오류를 제공합니다. 나는 여기서 오류가 armadillo의 cor 기능을 사용하여 주어진다는 것을 알아 냈다. 난 그냥 첫 번째 클래스에서 같이 rowvec 또는 cx_rowvec 사용할 때 완벽하게 작동합니다. 디버깅 나는 내가 cor와 라인 코드 주석을 제거 할 때 오류가 나타납니다. 누군가 나를 도울 수 있습니까? 마지막 armadillo 버전 7.600.2를 설치했습니다.

다른 Armadillo 라이브러리 기능을 사용하려고했습니다. 그 중 일부는없는 것 같습니다. 예를 들어, 다음 함수를 사용하여 mean(X),var(X),stddev(X) 나는 문제가 없으며 완벽하게 컴파일됩니다. 대신 내가 다른 사람과 같은 기능을 사용하려고하면 cov(X), cor(X) 나는 그 오류가 발생합니다. 내 라이브러리에는 그 기능이 없다고 생각합니다. 그래서 문제를 해결하기 위해 이전 라이브러리를 안전하게 제거하고 새 라이브러리를 설치하려고했습니다. 불행히도 오류가 발생합니다. 이 업데이트가 도움이되기를 바랍니다. 나는 내 코드에서 특정 함수를 사용할 때 컴파일이 잘 안되기 때문에 makefile에서 실수를하고 있다고 생각하지 않는다. 모두에게 감사드립니다!

+1

[정의되지 않은 참조/확인되지 않은 외부 기호 오류 란 무엇이며 어떻게 해결할 수 있습니까?] (http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved- 외부 기호 오류 및 방법 i-fix) – Danh

+0

Armadillo [자주받는 질문] (http://arma.sourceforge.net/faq.html) 페이지의 "연결"섹션을 참조하십시오. – mtall

답변

1

나는 armadillo_bits/config.hpp에서 다음 행을 주석으로 처리했습니다 : #define ARMA_USE_LAPACK#define ARMA_USE_BLAS. 작동하더라도 잘못된 솔루션입니다. 더 나은 솔루션은 여기 링크 섹션에서 설명합니다 http://arma.sourceforge.net/faq.html#linking.

+0

이것은 잘못된 것입니다. Armadillo [Frequently Asked Questions] (http://arma.sourceforge.net/faq.html) 페이지의 "연결하기"섹션에서 더 나은 해결책을 설명합니다. – mtall