我有一个错误的代码项目,因为我相信是一个从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可以找到的路径中。 我会建议两件事情:
liblapack.so.3gf
或liblapack.so.3.0.1
左右(有时甚至是常见),实质上是liblapack.so
。 你可以通过ln -s liblapack.so.3gf liblapack.so
建立一个链接 liblapack-dev
包,而不是使用Ubuntu或Debian回购。 由于一些不清楚的原因, liblapack3gf
和liblapack-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