所以,我正在尝试使用来自vesperix.com(版本3.2.2)的编辑FFTW交叉编译到ARM
但是,当我尝试使用此命令编译我的代码
时$ arm-linux-gnueabi-gcc -o fft fftw_example.c -L/usr/local/lib/lfftw3.a -lm
出现此错误
/tmp/ccFFFtbv.o: In function `main':
fftw_example.c:(.text+0x34c): undefined reference to `fftw_plan_dft_1d'
fftw_example.c:(.text+0x368): undefined reference to `fftw_execute'
fftw_example.c:(.text+0x380): undefined reference to `fftw_destroy_plan'
collect2: error: ld returned 1 exit status
有谁知道为什么?以及如何解决它?
这是我的ARM fftw代码,我使用某人来自互联网的代码。
/* Start reading here */
#include <fftw3.h>
#define NUM_POINTS 64
/* Never mind this bit */
#include <stdio.h>
#include <math.h>
#define REAL 0
#define IMAG 1
void acquire_from_somewhere(fftwf_complex* signal) {
/* Generate two sine waves of different frequencies and
* amplitudes.
*/
int i;
for (i = 0; i < NUM_POINTS; ++i) {
double theta = (double)i / (double)NUM_POINTS * M_PI;
signal[i][REAL] = 1.0 * cos(10.0 * theta) +
0.5 * cos(25.0 * theta) ;
signal[i][IMAG] = 1.0 * sin(10.0 * theta) +
0.5 * sin(25.0 * theta);
}
}
void do_something_with(fftwf_complex* result) {
int i;
for (i = 0; i < NUM_POINTS; ++i) {
double mag = sqrt(result[i][REAL] * result[i][REAL] +
result[i][IMAG] * result[i][IMAG]);
printf("%g\n", mag);
}
}
/* Resume reading here */
int main() {
fftwf_complex signal[NUM_POINTS];
fftwf_complex result[NUM_POINTS];
fftwf_plan plan = fftwf_plan_dft_1d(NUM_POINTS,
signal,
result,
FFTW_FORWARD,
FFTW_ESTIMATE);
acquire_from_somewhere(signal);
fftwf_execute(plan);
do_something_with(result);
fftwf_destroy_plan(plan);
fftwf_cleanup();
return 0;
}
答案 0 :(得分:0)
您是否在代码中添加了fftw.h文件?