犰狳与Eclipse

时间:2015-03-22 06:36:09

标签: c++ eclipse armadillo

我在Ubuntu 14.10中安装了Armadillo。我有一个示例代码,如下面的

#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
int main(int argc, char** argv)
  {
  mat A = randu<mat>(4,5);
  mat B = randu<mat>(4,5);
  cout << A*B.t() << endl;
  return 0;
}

我在命令行编译,它总是成功的,我在捕获的图像中描绘。 enter image description here

我在C ++和E / C ++ Build Settings中配置了Luna for L ++ enter image description here

正如您所看到的,它类似于命令行,但是当eclipse编译时,它使用-Iarmadillo而不是-larmadillo,然后发生错误。 enter image description here

错误是

  

制作所有构建文件:../ src / Test.cpp调用:GCC C ++编译器   g ++ -std = c ++ 0x -Iarmadillo -O0 -MMD -MP -MF&#34; src / Test.d&#34;   -MT&#34; SRC / Test.d&#34; -o&#34; src / Test.o&#34; &#34; ../的src / Test.cpp的&#34; /tmp/ccy9M8WG.o:在函数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*)': Test.cpp:(.text._ZN4arma4blas4gemvIdEEvPKcPKiS5_PKT_S8_S5_S8_S5_S8_PS6_S5_[_ZN4arma4blas4gemvIdEEvPKcPKiS5_PKT_S8_S5_S8_S5_S8_PS6_S5_]+0x55): undefined reference to wrapper_dgemv _&#39; /tmp/ccy9M8WG.o:在功能上   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*)': Test.cpp:(.text._ZN4arma4blas4gemmIdEEvPKcS3_PKiS5_S5_PKT_S8_S5_S8_S5_S8_PS6_S5_[_ZN4arma4blas4gemmIdEEvPKcS3_PKiS5_S5_PKT_S8_S5_S8_S5_S8_PS6_S5_]+0x5b): undefined reference to wrapper_dgemm _&#39; /tmp/ccy9M8WG.o:在功能上   void arma::blas::syrk<double>(char const*, char const*, int const*, int const*, double const*, double const*, int const*, double const*, double*, int const*)': Test.cpp:(.text._ZN4arma4blas4syrkIdEEvPKcS3_PKiS5_PKT_S8_S5_S8_PS6_S5_[_ZN4arma4blas4syrkIdEEvPKcS3_PKiS5_PKT_S8_S5_S8_PS6_S5_]+0x4e): undefined reference to wrapper_dsyrk _&#39; /tmp/ccy9M8WG.o:在功能上   double arma::blas::dot<double>(unsigned int, double const*, double const*)': Test.cpp:(.text._ZN4arma4blas3dotIdEET_jPKS2_S4_[_ZN4arma4blas3dotIdEET_jPKS2_S4_]+0x4a): undefined reference to wrapper_ddot _&#39; /tmp/ccy9M8WG.o:在功能上   TLS wrapper function for arma::arma_rng_cxx11_instance': Test.cpp:(.text._ZTWN4arma23arma_rng_cxx11_instanceE[_ZTWN4arma23arma_rng_cxx11_instanceE]+0x5): undefined reference to TLS初始化函数   ARMA :: arma_rng_cxx11_instance&#39;   。TEST.CPP :( text._ZTWN4arma23arma_rng_cxx11_instanceE [_ZTWN4arma23arma_rng_cxx11_instanceE] + 0×15):   未定义的引用`arma :: arma_rng_cxx11_instance&#39; collect2:   错误:ld返回1退出状态src / subdir.mk:18:目标配方   &#39; SRC / Test.o&#39;失败了:*** [src / Test.o]错误1

我的问题是

  1. 我如何强制使用-larmadillo?
  2. 这种现象发生了什么变化?
  3. 提前谢谢

2 个答案:

答案 0 :(得分:0)

您还可以创建GNU Autotools项目并添加以下行:

bin_PROGRAMS=armadillo_example

armadillo_example_SOURCES=armadillo_example.cpp

armadillo_example_LDADD=-larmadillo

存在源代码的Makefile.am文件。

答案 1 :(得分:-1)

您可能无法与犰狳联系。在Hamed建议的链接中使用-larmadillo。