정의되지 않은 참조됩니다 내가 GCC와 함께이 컴파일 this question는 LAPACK을 C 코드를 연결 실패 : 나는 여기 <p>C.</p>에서 LAPACK 기능을 사용하려고
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include "clapack.h"
#include "cblas.h"
void invertMatrix(float *a, unsigned int height){
int info, ipiv[height];
info = clapack_sgetrf(CblasColMajor, height, height, a, height, ipiv);
info = clapack_sgetri(CblasColMajor, height, a, height, ipiv);
}
void displayMatrix(float *a, unsigned int height, unsigned int width)
{
int i, j;
for(i = 0; i < height; i++){
for(j = 0; j < width; j++)
{
printf("%1.3f ", a[height*j + i]);
}
printf("\n");
}
printf("\n");
}
int main(int argc, char *argv[])
{
int i;
float a[9], b[9], c[9];
srand(time(NULL));
for(i = 0; i < 9; i++)
{
a[i] = 1.0f*rand()/RAND_MAX;
b[i] = a[i];
}
displayMatrix(a, 3, 3);
return 0;
}
에서 복사 한 몇 가지 테스트 코드를 :
를gcc -o test test.c \
-lblas -llapack -lf2c
주의 : 나는 또한 등 latlas, lcblas, lgfortran,
같은 다른 libs와 시도했습니다, 다양한 계층에서 해당 라이브러리를 시도했습니다 3,691,363,210오류 메시지는 다음
/tmp//cc8JMnRT.o: In function `invertMatrix':
test.c:(.text+0x94): undefined reference to `clapack_sgetrf'
test.c:(.text+0xb4): undefined reference to `clapack_sgetri'
collect2: error: ld returned 1 exit status
clapack.h 발견 및 포함 된 (도해의 일부로 설치). clapack.h는 문제가되는 함수를 포함합니다 --- 어떻게 찾을 수 없습니까?
기호는 실제로 libalapack 라이브러리에 있습니다 (strings
을 사용). 그러나 gcc 명령에 -lalapack을 추가하려면 -lcblas (많은 정의되지 않은 cblas_ * 참조)를 추가해야합니다. cblas를 설치하면 자동으로 atlas가 제거되어 clapack.h가 제거됩니다.
그래서, 이것은 어떤 종류의 의존성 지옥처럼 느껴집니다.
저는 FreeBSD 10 amd64를 사용하고 있으며 모든 관련 라이브러리가 설치되어있는 것으로 보입니다.
도움을 주시면 감사하겠습니다.
감사
이반
나는 그 질문을 읽었다. obvs - 필자는 그것에 링크했다. 나는 그것이 중복 된 것으로 생각하지 않으며, 다른 질문은 적절하게 답변되지 않았다. –
중복 질문에 대한 답변에서 제안을 시도한 것처럼 보이지 않습니다. 즉, 명령 줄에'-lcblas '를 추가 하시겠습니까? (오, 내 잘못, 나는 단지 당신의 질문을 더 신중하게 읽었고 결국 libcblas에 대해서 언급했다 - 도움이되지 않았는가?). 어쨌든 나는 가까운 투표를 철회했습니다. –
감사합니다 :) 내 부분에 대해, 나는 오늘 아침에 이것에 대해 좀 더 연구했고, 오류 메시지 뒤에 몇 가지 세부 사항을 추가했습니다. –