Lapack in c++ benutzen



  • Hallo,

    ich habe Lapack (Linear Algebra Package) 3.1.1-67.1
    (Architektur: x86_64) unter YAST (Suse 11) als rpm
    installiert (http://www.netlib.org/lapack/)

    Dabei wurden laut YAST insgesamt 3 Dateien installiert:

    /usr/lib64/liblapack.a
    /usr/lib64/liblapack.so
    /usr/lib64/liblapack_pic.a

    Da ich keine lapack.h Datei finden kann, weiss ich
    nicht, wie die Library in mein C++ Code einbinden
    soll?

    Compilieren mit (gcc version 4.3.1)

    g++ -O -I/usr/include testlapack.cc -o myprog -L/usr/lib64 -llapack

    führt zu :

    testlapack.cc:2:21: error: lapack.h: Datei oder Verzeichnis nicht gefunden
    testlapack.cc: In function ‘int main()’:
    testlapack.cc:33: error: ‘dgesv’ was not declared in this scope

    Das Testprogramm sieht so aus:

    #include <iostream>
    #include <lapack.h> 
    #define MAX 10
    
    int main(){
       // Values needed for dgesv
       int n;
       int nrhs = 1;
       double a[MAX][MAX];
       double b[1][MAX];
       int lda = MAX;
       int ldb = MAX;
       int ipiv[MAX];
       int info;
       // Other values
       int i,j;
    
       // Read the values of the matrix
       std::cout << "Enter n \n";
       std::cin >> n;
       std::cout << "On each line type a row of the matrix A followed by one element of b:\n";
       for(i = 0; i < n; i++){
         std::cout << "row " << i << " ";
         for(j = 0; j < n; j++)std::cin >> a[j][i];
         std::cin >> b[0][i];
       }
    
       // Solve the linear system
       dgesv(n, nrhs, &a[0][0], lda, ipiv, &b[0][0], ldb, &info);
    
       // Check for success
       if(info == 0)
       {
          // Write the answer
          std::cout << "The answer is\n";
          for(i = 0; i < n; i++)
            std::cout << "b[" << i << "]\t" << b[0][i] << "\n";
       }
       else
       {
          // Write an error message
          std::cerr << "dgesv returned error " << info << "\n";
       }
       return info;
    }
    

    Hat jemand Erfahrung mit Lapack?



  • hast du eventuell die dev-pakete vergessen?



  • Was meinst du genau?



  • dev-Pakete sind die Pakete für Entwickler (developer), darin sind normalerweise die header, Dokumentation usw. Was du bisher hat sind nur die puren Bibliotheken, die benötigt werden um fertig kompilierte Programme zu linken (statisch oder dynamisch).


Anmelden zum Antworten