[질문]fftw 라이브러리 설치후 컴파일시 링크 에러
안녕하세요. www.fftw.org에서 fftw-2.5.1 버젼을 다운받아서 설치 했습니다.
/usr/local/lib 밑에 rfftw.a 파일이 생겼구여 /usr/local/include 밑에 fftw.h , rfftw.h 파일이 생겼습니다.
그래서 테스트를 위해 아래 소스를 받아와 컴파일 하는데 짜구 링크 에러가 생깁니다.
고수님들은 어떤 방법으로 해결했는지요... 많은 조언 부탁드립니다.
컴파일 방법
gcc -o fftw_test fftw_test.c -I/usr/local/include -L/usr/local/lib -lrfftw -lm
소스 (fftw_test.c)
#include
#include
#include
#include
#define LENGS 1024
#define DX 0.01
int main(void)
{
fftw_real in_ary[LENGS] ,out_ary[LENGS] , spectlum[LENGS/2 +1];
rfftw_plan pulan;
int n;
rfftw_plan rfftw_create_plan();
void rfftw_one();
void rfftw_destroy_plan();
/* double omega; */
for(n=0 ; n
in_ary[n] = 0.0 ;
/* omega = 1.0 + n / LENGS ;
* * in_ary[n] = sin(n * DX * omega); */
}
in_ary[200] = 1.0; /* gauss's delta function */
pulan = rfftw_create_plan(LENGS, FFTW_REAL_TO_COMPLEX, FFTW_ESTIMATE);
rfftw_one(pulan, in_ary, out_ary);
spectlum[0] = out_ary[LENGS] * out_ary[LENGS];
for(n=1 ; n<(LENGS+1)/2 ; n++){
spectlum[n] = out_ary[n] * out_ary[n] + out_ary[LENGS-n]*out_ary[LENGS-n];
}
spectlum[LENGS/2] = out_ary[LENGS/2] * out_ary[LENGS/2] ;
rfftw_destroy_plan(pulan);
for(n=0 ; n
printf("%6.3f %8.5f\n",(double)(n /(LENGS * DX)), spectlum[n]);
}
return 0;
}
컴파일시 나타나는 에러 내용입니다.
cc1: warning: changing search order for system directory "/usr/local/include"
cc1: warning: as it has already been specified as a non-system directory
/usr/local/lib/librfftw.a(rplanner.o): In function `rplanner':
rplanner.o(.text+0x3e): undefined reference to `fftw_lookup'
rplanner.o(.text+0x4c): undefined reference to `fftw_use_plan'
rplanner.o(.text+0xb4): undefined reference to `fftw_insert'
rplanner.o(.text+0xf9): undefined reference to `fftw_wisdom_add'
/usr/local/lib/librfftw.a(rplanner.o): In function `rfftw_create_plan_specific':
rplanner.o(.text+0x1b8): undefined reference to `fftw_make_empty_table'
rplanner.o(.text+0x1fe): undefined reference to `fftw_destroy_table'
rplanner.o(.text+0x211): undefined reference to `fftw_complete_twiddle'
/usr/local/lib/librfftw.a(rplanner.o): In function `rfftw_create_plan':
rplanner.o(.text+0x288): undefined reference to `fftw_make_empty_table'
rplanner.o(.text+0x2ce): undefined reference to `fftw_destroy_table'
rplanner.o(.text+0x2e1): undefined reference to `fftw_complete_twiddle'
rplanner.o(.text+0x2f9): undefined reference to `fftw_malloc'
rplanner.o(.text+0x33e): undefined reference to `fftw_free'
rplanner.o(.text+0x34f): undefined reference to `fftw_make_empty_table'
rplanner.o(.text+0x395): undefined reference to `fftw_destroy_table'
rplanner.o(.text+0x3a8): undefined reference to `fftw_complete_twiddle'
/usr/local/lib/librfftw.a(rplanner.o): In function `rfftw_print_plan':
rplanner.o(.text+0x3e4): undefined reference to `fftw_fprint_plan'
/usr/local/lib/librfftw.a(rplanner.o): In function `rplanner_wisdom':
rplanner.o(.text+0x447): undefined reference to `fftw_wisdom_lookup'
rplanner.o(.text+0x566): undefined reference to `fftw_make_node_hc2hc'
rplanner.o(.text+0x59c): undefined reference to `fftw_make_plan'
rplanner.o(.text+0x5a6): undefined reference to `fftw_use_plan'
rplanner.o(.text+0x5c5): undefined reference to `fftw_complete_twiddle'
rplanner.o(.text+0x5da): undefined reference to `fftw_destroy_plan_internal'
rplanner.o(.text+0x620): undefined reference to `fftw_make_node_hc2real'
rplanner.o(.text+0x656): undefined reference to `fftw_make_plan'
rplanner.o(.text+0x660): undefined reference to `fftw_use_plan'
rplanner.o(.text+0x687): undefined reference to `fftw_complete_twiddle'
rplanner.o(.text+0x6a1): undefined reference to `fftw_make_node_real2hc'
/usr/local/lib/librfftw.a(rplanner.o): In function `rplanner_normal':
댓글 달기