Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用CLAPACK未定义的引用错误_C++_Linux - Fatal编程技术网

C++ 使用CLAPACK未定义的引用错误

C++ 使用CLAPACK未定义的引用错误,c++,linux,C++,Linux,我正试图让clapack在ubuntu 14上工作。。。但它一直告诉我对“ssyev_u2;”的未定义引用(实际上它发生在“clack.h”中的任何c函数上) 我刚刚使用了cmd“g++lineartest3.cpp-o linear3” 我确信我遵循了下面的说明 cd-CLAPACK-3.2.1 cp make.inc.示例make.inc 制作f2clib 制造布拉斯利布 制造(这需要一段时间) sudo cp INCLUDE/f2c.h/usr/INCLUDE sudo cp INCLU

我正试图让clapack在ubuntu 14上工作。。。但它一直告诉我对“ssyev_u2;”的未定义引用(实际上它发生在“clack.h”中的任何c函数上)

我刚刚使用了cmd“g++lineartest3.cpp-o linear3”

我确信我遵循了下面的说明

  • cd-CLAPACK-3.2.1
  • cp make.inc.示例make.inc
  • 制作f2clib
  • 制造布拉斯利布
  • 制造(这需要一段时间)
  • sudo cp INCLUDE/f2c.h/usr/INCLUDE
  • sudo cp INCLUDE/clapack.h/usr/INCLUDE
  • sudo chmod 644/usr/include/f2c.h
  • sudo chmod 644/usr/include/clapack.h**
还有我的小密码

#include <iostream>
using namespace std;
extern "C" {               
#include "f2c.h"           
#include "clapack.h"       
}


int main()
{
int i,j;
float *A = new float[16];
A[0] = 1; A[1] = 1; A[2] = 1;  A[3] = 1;
A[4] = 1; A[5] = 2; A[6] = 3;  A[7] = 4;
A[8] = 1; A[9] = 3; A[10]= 6;  A[11]= 10;
A[12]= 1; A[13]= 4; A[14]= 10; A[15]= 20;
cout << "A = (";
for (i=0; i<15; i++) cout << A[i] << ",";
cout << A[15] << ")" << endl;

// use call-by-reference parameters, in another adaptation to Fortran
int n = 4;
char jobz = 'V';
char uplo = 'U';
integer N = n;
integer LDA=n;
float* eigvalue=new float[n]; 
int worksize;    // must have lwork>=3n-1, so n^2 is not big enough for n=2!
if (n==2) worksize = 5; else worksize = n*n;
float *work; 
work=new float[worksize];
integer lwork = worksize;
integer info;    // exit status

ssyev_(&jobz, &uplo, &N, A, &LDA, eigvalue, work, &lwork, &info);

cout << "info = " << info << endl;
if (info>=0)

{

    cout << "Eigenvalues = (" 

     << eigvalue[0] << "," << eigvalue[1] << "," 

     << eigvalue[2] << "," << eigvalue[3] << ")" << endl;

    cout << "Correct answer in GvL: (.0380, .4538, 2.2034 (typo?), 26.3047)" 

     << endl;

    // eigenvectors are stored in A (overwriting the original matrix):

    // ith eigenvector = ith column of A

    for (i=0; i<4; i++)

      {

    cout << "Eigenvector " << i << " = (";
    for (j=0; j<3; j++)
      cout << A[j+i*4] << ","; // jth elt of ith col=jth elt of ith evector
    cout << A[3+i*4] << ")" << endl;
      }
}
delete [] A;
delete [] eigvalue;  // be a good boy scout
delete [] work;
return 0;

}   
#包括
使用名称空间std;
外部“C”{
#包括“f2c.h”
#包括“clapack.h”
}
int main()
{
int i,j;
浮动*A=新浮动[16];
[0]=1;A[1]=1;A[2]=1;A[3]=1;
A[4]=1;A[5]=2;A[6]=3;A[7]=4;
A[8]=1;A[9]=3;A[10]=6;A[11]=10;
A[12]=1;A[13]=4;A[14]=10;A[15]=20;

问题解决了…我不得不说初学者的文档很糟糕

将blas_LINUX.a lapack_LINUX.a F2CLIBS/libf2c.a复制到/usr/local/lib,并分别重命名为libblas.a liblapack.a libf2c.a

更改权限“chmod 777 libblas.a liblapack.a libf2c.a”


编写一个test.cpp并调用“g++test.cpp-llapack-lblas-lf2c-o test”

为什么用这些空行将代码延长了两倍?!好吧,我不会使用777获得许可…644对于库来说更好。