Nowe posty

Autor Wątek: problem z kompilacja  (Przeczytany 4721 razy)

kordi

  • Gość
problem z kompilacja
« dnia: 2013-03-12, 23:25:51 »
Witam!
Probuje skompilowac program, ale wyskakuja mi bledy:
undefined reference to `pow_di'
undefined reference to `s_wsfe'
 undefined reference to `do_fio'
 undefined reference to `e_wsfe'
Czy ktos z Was spotkal sie z takim problemem i wie jak roziwazc?
Biblioteki: Blas i Lapack mam zainstalowane.

chmooreck

  • Gość
problem z kompilacja
« Odpowiedź #1 dnia: 2013-03-13, 10:23:17 »
rtfm.killfile.pl

P.S. Pewnie nie linkujesz bibliotek, których używasz w kodzie

kordi

  • Gość
problem z kompilacja
« Odpowiedź #2 dnia: 2013-03-13, 20:09:30 »
Zrobilam test.
Napisalam program, ktory kkorzysta z biblioteki LAPACK:
#include
#include

using namespace std;
extern "C" void dgetrs(char *TRANS, int *N, int *NRHS, double *A,
                      int *LDA, int *IPIV, double *B, int *LDB, int *INFO );

int main()
{
    char trans = 'N';
    int dim = 2;
    int nrhs = 1;
    int LDA = dim;
    int LDB = dim;
    int info;

    vector a, b;

    a.push_back(1);
    a.push_back(1);
    a.push_back(1);
    a.push_back(-1);

    b.push_back(2);
    b.push_back(0);

    int ipiv[3];


    dgetrs(&trans, &dim, &nrhs, & *a.begin(), &LDA, ipiv, & *b.begin(), &LDB, &info);


    std::cout << "solution is:";
    std::cout << "[" << b[0] << ", " << b[1] << ", " << "]" << std::endl;
    std::cout << "Info = " << info << std::endl;
Przy komopilacji nie linkuje mi funkcji  dgetrs.
Natomist jesli zmienie funkcje na  dgetrs_(....), to wszystko dziala dobrze.

Mysle, ze wczesnie podany przeze mnie problem na tym samym polega.

Czy jest jakies rozwiazanie, aby linkowalo automatycznie funkcje dgetrs bez podkreslinika?

chmooreck

  • Gość
problem z kompilacja
« Odpowiedź #3 dnia: 2013-03-13, 21:19:56 »
W jaki sposób kompilujesz/linkujesz ?

kordi

  • Gość
problem z kompilacja
« Odpowiedź #4 dnia: 2013-03-13, 21:33:44 »
Kompiluje w nastepujacy sposob:
g++ -Wall  lapack_tst.cpp -o test.x -llapack -lblas -lm

chmooreck

  • Gość
problem z kompilacja
« Odpowiedź #5 dnia: 2013-03-14, 07:57:21 »
Zamiast deklarować funkcje w kodzie powinnaś zawrzeć (include) odpowiedni nagłówek z używanej biblioteki.

kordi

  • Gość
problem z kompilacja
« Odpowiedź #6 dnia: 2013-03-14, 08:44:18 »
Dodalam naglowek: #include "lapack.h"

i dokonalam kompilacji: g++ -Wall  lapack_tst.cpp -L/usr/lib -llapack -lblas -lm

Niestety nadal nie dziala, wyskakuje blad:
 fatal error: lapack.h: No such file or directory

chmooreck

  • Gość
problem z kompilacja
« Odpowiedź #7 dnia: 2013-03-14, 11:58:35 »
Widocznie nie ma go w sciezce.
nie używam tej biblioteki
Najszybciej będzie jak przeszukasz /usr/include i ew. /usr/local/incude za pomocą find'a