私はライブラリを使用するのが初めてで、lapack++とそれを機能させるのに問題があります。これまでに何をしてみたかを説明します。
最初にBLASとLAPACKをインストールしましたが、うまくいきました。LAPACK ++バージョン2.5.2(http://lapackpp.sourceforge.net/)をインストールしたので、C /C++でさまざまな線形代数ルーチンを呼び出すことができます。構成、make、make installを実行すると、すべての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
私は得る
パッケージlapackppがpkg-config検索パスに見つかりませんでした。おそらく、`lapackpp.pc'を含むディレクトリをPKG_CONFIG_PATH環境変数に追加する必要があります。パッケージ'lapackpp'が見つかりません
同じことがlapackとblasにも起こります。
どうしたらいいかわからない。どんな助けでも大歓迎です、ありがとう!