【发布时间】:2014-08-24 07:28:27
【问题描述】:
我无法让 Armadillo 4.3 在 Windows 上运行。包含库armadillo/include,我运行g++ "-LC:\\Armadillo\\BLAS_Lapack" -o1 -o test.exe test.o -llapack -lblas,然后我收到以下错误消息:
C:/Armadillo/include/armadillo_bits/blas_wrapper.hpp:183: undefined reference to `wrapper_ddot_'
test.o: In function `ZN4arma4blas4gemvIdEEvPKcPKiS5_PKT_S8_S5_S8_S5_S8_PS6_S5_':
C:/Armadillo/include/armadillo_bits/blas_wrapper.hpp:34: undefined reference to `wrapper_dgemv_'
test.o: In function `ZN4arma4blas4gemmIdEEvPKcS3_PKiS5_S5_PKT_S8_S5_S8_S5_S8_PS6_S5_':
C:/Armadillo/include/armadillo_bits/blas_wrapper.hpp:69: undefined reference to `wrapper_dgemm_'
如果我运行g++ -o1 -o test.exe test.o -llapack -lblas,我会得到
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -llapack
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lblas
我确实根据README文件取消了配置文件config.hpp的注释。
有人知道如何让犰狳工作吗? (我正在使用 Eclipse CDT。)
【问题讨论】:
-
您是否将 liblpack.a 和 libblas.a 文件复制到 MinGW 安装的 lib 文件夹中?如果您不这样做,则需要通过
-L或--library-path开关告诉g++(实际上是ld)它们位于哪个文件夹中。如果你输入ld --help,你可以看到这个 -
@enhzflep 当我从here 下载犰狳(和 lapack)时,没有 liblapck.a 文件,也没有 libblas.a。我在哪里可以找到它们?我确实使用
-L开关告诉 g++ 在哪里寻找 lapack.lib 和 blas.lib。 -
刚刚下载了犰狳并查看了包含的文件。我看到它包含用于 x64 窗口的预编译库 - 尽管适用于 Visual Studio。在那种情况下,我猜你有很多选择。 1. 您可以下载 blas 和 lapack 源代码,然后使用 minGW 自己构建它们(下载位置在 Readme.txt 文件中)2. 您可以使用
dlltoolmingw 附带的程序,用于从您拥有的 DLL 文件生成导入库。我不知道这是否是一个有效的选项,因为 DLL 是 x64 并且您使用的是 MinGW32。尝试#1 -
@enhzflep 我构建了源代码,现在有了 liblapack.a 和 libblas.a 文件。我试图链接到它们并将文件添加到 MinGW 的 lib 文件夹中,两次都没有成功。我仍然从原来的帖子中得到第一个错误。
-
构建 2 个库或测试应用程序现在不是我的选择。抱歉,不确定什么问题出在哪里。
标签: c++ lapack mingw32 blas armadillo