C 在启用线程和浮点的情况下使用fftw3.3.6时未定义的引用

C 在启用线程和浮点的情况下使用fftw3.3.6时未定义的引用,c,multithreading,fftw,C,Multithreading,Fftw,我在Ubuntu 16.04上安装了fftw3.3.6,以测试在启用线程和浮点的情况下使用该库的性能 步骤1: 在启用线程、浮点和SIMD指令的情况下安装库:` sudo ./configure --enable-float --enable-generic-simd128 --enable-generic-simd256 --enable-threads make make install 步骤2: 我编写了这段代码(基于手册和教程),使用4个线程(从复杂到复杂)计算1024个点的fft:

我在Ubuntu 16.04上安装了fftw3.3.6,以测试在启用线程和浮点的情况下使用该库的性能

步骤1: 在启用线程、浮点和SIMD指令的情况下安装库:`

sudo ./configure --enable-float --enable-generic-simd128 --enable-generic-simd256 --enable-threads
make
make install
步骤2: 我编写了这段代码(基于手册和教程),使用4个线程(从复杂到复杂)计算1024个点的fft:


在安装和编译过程中,我是否遗漏了什么,或者有什么错误?

请阅读本手册。发件人:

使用
-lm
链接

在程序的编译阶段使用
-lm
是无用的:

.c.o:
     $(CC) $(CFLAGS) $< -lm -o $@

在我的例子中,问题在于

undefined reference to `__log_finite'

可以通过编译而不使用
-ffast math
选项来解决此问题。

谢谢您的回答,但是,它是局部的。。。它只解决了
sincos
库的问题,但我仍然有未定义的
fftwf_init_线程的引用
fftwf_plan_和
fftwf_cleanup_线程
你认为
-L-lfftw3f_线程
有什么作用?
gcc test.o -o test -L -lfftw3f_threads -lfftw3f 
//usr/local/lib/libfftw3f.a(mapflags.o): In function `fftwf_mapflags':
mapflags.c:(.text+0x346): undefined reference to `__log_finite'
Makefile:13: recipe for target 'test' failed
//usr/local/lib/libfftw3f.a(trig.o): In function `cexpl_sincos':
trig.c:(.text+0x2c1): undefined reference to `sincos'
//usr/local/lib/libfftw3f.a(trig.o): In function `fftwf_mktriggen':
trig.c:(.text+0x50b): undefined reference to `sincos'
trig.c:(.text+0x653): undefined reference to `sincos'
test.o: In function `main':
/home/anouar/workspace/Thread_example//test.c:27: undefined reference to `fftwf_init_threads'
/home/anouar/workspace/Thread_example//test.c:28: undefined reference to `fftwf_plan_with_nthreads'
/home/anouar/workspace/Thread_example//test.c:40: undefined reference to `fftwf_cleanup_threads'
 collect2: error: ld returned 1 exit status
 make: *** [test] Error 1
.c.o:
     $(CC) $(CFLAGS) $< -lm -o $@
$(EXECUTABLE): $(OBJECTS) 
     $(CC) $(OBJECTS) -o $@ -L -lfftw3f_threads -lfftw3f -lm
undefined reference to `__log_finite'