سؤال

عندما أحاول تجميع 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

يمكن للشخص أن يساعد؟لقد قمت بتثبيت يدويا

  • أحدث نسخة من BLAS
  • لاباك-3.4.0
  • دفعة-1.48.0
  • أحدث نسخة من أطلس

أنا أستخدم Ubuntu 11.04 على طراز MacBook Pro 7,1

هل كانت مفيدة؟

المحلول

شكرا جزيلا لك على OSGX!بعد قراءة تعليقه، أخذت نظرة ثانية على ملف README!اتضح أنني كنت أفتقد "-o1 -larmadillo" في الأمر!

إليك الأمر الذي اعتدت عليه الحصول عليه في العمل: giveacodicetagpre.

خطأ غبي، وأنا أعلم .... يذهب فقط لتذكيرك بمدى أهمية قراءة README.

تذكر README أيضا:

إذا تلقيت ربط الأخطاء، أو إذا تم تثبيت Armadillo يدويا وتحدد أن Lapack و Blas متوفرة، سوف بحاجة إلى الارتباط الصريح مع Lapack و Blas (أو ما يعادلها)، على سبيل المثال: giveacodicetagpre.

لم يكن علي أن أدرج "levack -lblas" ولكن ربما سيؤدي ذلك إلى مساعدة أي شخص آخر من مشاكل مماثلة.

نصائح أخرى

هناك غريبة، لقد اكتشفت للتو من خلال مقارنة بتجميع التعليمات العامة مسبقا مع مشكلة هذا الموضوع، مشددا على مشاركة جنو CC (أنا لا خبير في هذا): على نجاح الجهاز الخاص بي يعتمد على الترتيبالمعلمات إلى GCC / G ++ أين G ++ Infile -o Outfile -libarmadillo ... عملت، ولكن G ++ -Libarmadillo Invile -o Outfile ... لم يكن مع (تقريبا) نفس الخطأ كما هو مذكور أعلاه. (نأمل أن يساعد).

اعتبارا من 5.0.0 (قد ينطبق أيضًا على الإصدارات السابقة)

أنت في الواقع تحتاج -larmadillo, ، على فيدورا 21 -llapack و -lopenblas لم تعد ضرورية صراحة بعد الآن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top