Linux使用lapack库

我有一个错误的代码项目,因为我相信是一个从lapack中缺less的例程:

HomographyInit.cc:(.text+0x385): undefined reference to `dgesvd_' 

我想我需要将lapack库以某种方式添加到我的Makefile中。 这里是我的Makefile的一部分:

 CC = g++ COMPILEFLAGS = -I MY_CUSTOM_INCLUDE_PATH -D_LINUX -D_REENTRANT -Wall -O3 -march=nocona -msse3 LINKFLAGS = -L MY_CUSTOM_LINK_PATH -lGVars3 -lcvd 

我试图做以下无效:

 CC = g++ COMPILEFLAGS = -I MY_CUSTOM_INCLUDE_PATH -D_LINUX -D_REENTRANT -Wall -O3 -march=nocona -msse3 LINKFLAGS = -L MY_CUSTOM_LINK_PATH -lGVars3 -lcvd **-llapack** 

结果:

 make ... /usr/bin/ld: cannot find -llapack collect2: ld returned 1 exit status 

我如何将lapack添加到我的项目中? 我很确定我正确地安装了它,虽然会愿意仔细检查。

看起来liblapack不在ld可以找到的路径中。 我会建议两件事情:

  1. 手动建立一个符号链接。 ld无法识别liblapack.so.3gfliblapack.so.3.0.1左右(有时甚至是常见),实质上是liblapack.so 。 你可以通过ln -s liblapack.so.3gf liblapack.so建立一个链接
  2. 安装liblapack-dev包,而不是使用Ubuntu或Debian回购。 由于一些不清楚的原因, liblapack3gfliblapack-dev不一样。 我不确定是否在任何情况下都会做或不做同样的事情。

我认为第一个项目应该能够解决您的问题(希望)。

在我的计算机上,动态库位于/usr/lib64/liblapack.so.3.4.1中,并包含所需的符号:

 $ nm -D /usr/lib64/liblapack.so.3.4.1 | grep dgesvd 0000000000189200 T dgesvd_ 

所以我猜猜你的lapack安装的地方不在链接搜索路径。 您应该将标志-L/path/to/the/lapackdir-L/path/to/the/lapackdir