我最近才开始使用图书馆,我对拉帕卡++(lapack++)和使其运作有些困难,我将解释我迄今所做的和尝试。
我首先安装了 BLAS 和 LAPACK, 并且那很好。 我现在安装了 LAPACK+++ 版本 2.5.2 (http://lapackpp. sourceforge. net/), 这样我就可以在 C/ C++ 中调用各种线性代数例。 在我配置、 制造并安装后, 将所有 C/ C++ 头文件都放置在 / usr/ local/ including/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
我通过在页眉文件中明确写出页眉文件的位置来解决了这个问题,因为页眉文件造成了麻烦。
Eg. I replaced #include with #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
which compiled the code, now when I ran the program 通过打字 ./test I go the error
./test: error while loading shared libraries: liblapackpp.so.14: cannot open shared object file: No such file or directory
现在我困惑了
我不确定这是否与问题有关 但当我打字时
pkg-config lapackpp --libs
我得到
Package lapackpp was not found in the pkg-config search path. Perhaps you should add the directory containing `lapackpp.pc to the PKG_CONFIG_PATH environment variable No package lapackpp found
拉包和Blas也发生同样的情况。
我不确定该怎么办 任何帮助都会非常感激,谢谢!