我在创建代码项目时出错,因为我认为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添加到我的项目中?我很确定我正确安装了它,但愿意以某种方式仔细检查。
答案 0 :(得分:4)
看起来liblapack不在ld可以找到的路径中。我会建议两件事:
liblapack.so.3gf
或liblapack.so.3.0.1
左右可能(有时是常见的)基本上是liblapack.so
。您可以按ln -s liblapack.so.3gf liblapack.so
liblapack-dev
软件包。由于某些不明原因,liblapack3gf
与liblapack-dev
不同。我不确定在任何情况下,两者都会做同样的事情。我认为第一项应该能够解决您的问题(希望如此)。
答案 1 :(得分: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