7

Armadillo 2.4.2に付属のexample1.cppをコンパイルしようとすると、次のリンクエラーが発生し続けます。

/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の最新バージョン
  • lapack-3.4.0
  • ブースト-1.48.0
  • ATLASの最新バージョン

MacBookPro7,1モデルでUbuntu11.04を使用しています

4

3 に答える 3

16

osgxに感謝します!彼のコメントを読んだ後、READMEファイルをもう一度確認しました。コマンドに「-O1-larmadillo」が含まれていなかったことがわかりました。

これが私がそれを機能させるために使用したコマンドです:

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

ばかげた間違い、私は知っています....それはREADMEを読むことがいかに重要であるかをあなたに思い出させるだけです。

READMEには次のことも記載されています。

リンクエラーが発生した場合、またはArmadilloが手動でインストールされ、LAPACKとBLASが使用可能であることを指定した場合は、たとえば、LAPACKとBLAS(またはそれらに相当するもの)と明示的にリンクする必要があります。

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

'-llapack -lblas'を含める必要はありませんでしたが、これは同様の問題を抱えている他の人に役立つかもしれません。

于 2012-01-25T19:13:38.900 に答える
1

以前に動作していたコードのコンパイルをこのスレッドの問題と比較して、gnu ccの関与を強調して発見した奇妙な点があります(私はこれに関する専門家ではありません):私のマシンでのコンパイルの成功は、パラメーターの順序に依存しますgcc / g ++ここで、g ++ infile -o outfile -libarmadillo ...は機能しましたが、g ++ -libarmadillo infile -o outfile ...は上記と(ほぼ)同じエラーで動作しませんでした。(お役に立てば幸いです)。

于 2017-04-23T20:40:20.040 に答える
0

現在5.0.0(以前のバージョンにも適用される可能性があります)

あなたは実際に、を必要-larmadilloとし、もはや明示的に必要ではFedora 21 -llapackあり-lopenblasません。

于 2016-02-01T17:36:18.843 に答える