C 在启用线程和浮点的情况下使用fftw3.3.6时未定义的引用
我在Ubuntu 16.04上安装了fftw3.3.6,以测试在启用线程和浮点的情况下使用该库的性能 步骤1: 在启用线程、浮点和SIMD指令的情况下安装库:`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:
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'