gpt4 book ai didi

c++ - 使用 CLAPACK 未定义引用错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:33 24 4
gpt4 key购买 nike

我正在尝试让 clapack 在 ubuntu 14 上工作......但它一直告诉我 undefined reference “ssyev_”(实际上它发生在“clapack.h”中的任何那些 c 函数中)

我刚刚使用命令“g++ lineartest3.cpp -o linear3”

我很确定我遵循了下面显示的说明。

  • CD CLAPACK-3.2.1
  • cp make.inc.example make.inc
  • 制作f2clib
  • 制作 blaslib
  • 制作(这需要一段时间)
  • 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;

}

请帮忙..

最佳答案

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

复制 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”

关于c++ - 使用 CLAPACK 未定义引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24431024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com