3

我在编写代码项目时出错,因为我认为 lapack 缺少一个例程:

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 添加到我的项目中?我很确定我正确安装了它,但愿意以某种方式仔细检查。

4

2 回答 2

4

看起来 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 repos,请安装软件包。由于一些不清楚liblapack3gf的原因,与liblapack-dev. 我不确定在任何情况下,两者是否都会做同样的事情。

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

于 2013-07-20T21:26:37.213 回答
1

在我的计算机上,动态库位于 /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到 LINKFLAGS

于 2013-07-17T21:47:14.523 回答