質問

を使用してい 数字図書館のバインディングのためのブUBlas を解決するための簡単な リニアシステム:

#include<boost/numeric/ublas/matrix.hpp>
#include<boost/numeric/ublas/io.hpp>
#include<boost/numeric/bindings/traits/ublas_matrix.hpp>
#include<boost/numeric/bindings/lapack/gesv.hpp>
#include <boost/numeric/bindings/traits/ublas_vector2.hpp>


namespace ublas = boost::numeric::ublas;
namespace lapack= boost::numeric::bindings::lapack;


int main()
{
    ublas::matrix<float,ublas::column_major> A(3,3);
    ublas::vector<float> b(3);


    for(unsigned i=0;i < A.size1();i++)
        for(unsigned j =0;j < A.size2();j++)
        {
            std::cout << "enter element "<<i << j << std::endl;
            std::cin >> A(i,j);
        }

    std::cout << A << std::endl;

    b(0) = 21; b(1) = 1; b(2) = 17;

    lapack::gesv(A,b);

    std::cout << b << std::endl;


    return 0;
}

またコンパイルして、以下のコマンド:

g++ -I/home/foolb/.boost/include/boost-1_38 -I/home/foolb/.boostnumbind/include/boost-numeric-bindings solve_Axb_byhand.cc -o solve_Axb_byhand

は、以下のエラー:

/media/disk/tmp/ccbd973l.o: In function `boost::numeric::bindings::lapack::detail::gesv(int, int, float*, int, int*, float*, int, int*)':
solve_Axb_byhand2.cc:(.text._ZN5boost7numeric8bindings6lapack6detail4gesvEiiPfiPiS4_iS5_[boost::numeric::bindings::lapack::detail::gesv(int, int, float*, int, int*, float*, int, int*)]+0x59): undefined reference to `sgesv_'
collect2: ld returned 1 exit status

何が悪いのかという私のアプローチのコードについて教えてください。

役に立ちましたか?

解決

sgesv_象徴であるからLAPACK図書館、使いにリンクします。uBLASで結合するのでしょうか。

私も非常に良いのではないかと思いライブラリの名前が:)

他のヒント

申し訳ありませんが、これは仕方オフトラックですが、私はあなたがあなたのG ++コマンドでブーストライブラリにリンクを見ることができない場合。私は、あなたが検索パスを含めて見たが、自分自身のライブラリにコンパイルブーストの明示的な含めることはありません。 -lboostのようなもの(私はあなたが必要があると思い正確な形式を知らない怖い、それがうまく場所に依存してもよい)。

ブースト数値結合ライブラリとリンクする場合、あなたはパラメータにリンクすることができます。


-Lpath/to/lapack -llapack -Lpath/to/blas -lblas -lgfortran

GCC4で


-Lpath/to/lapack -llapack -Lpath/to/blas -lblas -lg2c

GCC3で

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top