Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: problem z kompilacja  (Przeczytany 4720 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