我是使用库的新手,我在使用 lapack++ 并让它工作时遇到了一些麻烦。我将解释到目前为止我所做的和尝试的。
首先,我安装了 BLAS 和 LAPACK,一切顺利。我现在已经安装了 LAPACK++ 版本 2.5.2 (http://lapackpp.sourceforge.net/),所以我可以在 C/C++ 中调用各种线性代数例程。在我配置、制作然后进行安装之后,它会将所有 C/C++ 头文件放在 /usr/local/include/lapackpp/ 中,其中一些是..
arch.h
bmd.h
gmf.h
lapackc.h
lautil.h
spdmd.h
ultgmd.h
bfd.h
...
以及 /usr/local/lib 中的以下文件
liblapackpp.la
liblapackpp.so
liblapackpp.so.14
liblapackpp.so.14.2.0
现在,如果我尝试使用 g++ 编译简单的代码
#include <lapackpp/lapackpp.h>
using namespace std;
int main(int argc, char** argv) {
return 0;
}
我得到以下输出...
In file included from /usr/local/include/lapackpp/lapackc.h:14,
from /usr/local/include/lapackpp/lapack.h:10,
from /usr/local/include/lapackpp/lapackpp.h:16,
from test.cpp:1:
/usr/local/include/lapackpp/lacomplex.h:45:23: error: laversion.h: No such file or directory
/usr/local/include/lapackpp/lacomplex.h:48:17: error: f2c.h: No such file or directory
In file included from /usr/local/include/lapackpp/lapackpp.h:47,
from test.cpp:1:
/usr/local/include/lapackpp/latmpl.h:36:22: error: lafnames.h: No such file or directory
我通过在引起问题的头文件中明确写入头文件的位置来解决了这个问题。
例如。我用#include替换了#include
这样做之后,我的代码编译得很好。
现在如果我尝试编译代码
#include <cstdlib>
#include <iostream>
#include <lapackpp/lapackpp.h>
using namespace std;
int main(int argc, char** argv) {
LaGenMatDouble A(5,5);
cout << "This is a test." << endl;
return 0;
}
通过键入
g++ test.cpp -o test -I usr/local/include/lapackpp
我收到以下错误
/tmp/ccAq6nkP.o: In function `main':
test.cpp:(.text+0x22): undefined reference to `LaGenMatDouble::LaGenMatDouble(int, int)'
test.cpp:(.text+0x4f): undefined reference to `LaGenMatDouble::~LaGenMatDouble()'
test.cpp:(.text+0x67): undefined reference to `LaGenMatDouble::~LaGenMatDouble()'
collect2: ld returned 1 exit status
(关于 LaGenMatDouble 的信息在这里 )
这表明我可能错误地链接到图书馆?
经过一番谷歌搜索后,我意识到我需要使用 -I 链接到头文件,通过 -L 链接到共享库,通过 -llapackpp 链接库本身,所以我输入了
g++ test.cpp -o test -I usr/local/include/lapackpp -L usr/local/lib -llapackpp
它编译了代码,现在当我通过键入 ./test 运行程序时出现错误
./test: error while loading shared libraries: liblapackpp.so.14: cannot open shared object file: No such file or directory
现在我很困惑。
我不确定这是否与问题有关,但是当我输入
pkg-config lapackpp --libs
我明白了
在 pkg-config 搜索路径中找不到包 lapackpp。也许您应该将包含 `lapackpp.pc' 的目录添加到 PKG_CONFIG_PATH 环境变量中找不到包 'lapackpp'
lapack 和 blas 也是如此。
我不确定该怎么做。任何帮助将不胜感激,谢谢!