一、Linux中编译FFTW
1、下载FFTW源码,在源码目录创建一个build目录
2、进入build目录,使用cmake编译即可
编译动态库:
cmake ..
make
编译静态库:
cmake .. -DBUILD_SHARED_LIBS=OFF
make
如果需要单精度版本,入参ENABLE_FLOAT设置为ON:
cmake .. -DENABLE_FLOAT=ON
二、WSL环境编译
在windows的WSL环境中编译,方法是一样的,但是WSL编译的静态库在引用的时候可能会报错
报错信息
libfftw3.a(assert.c.o): relocation R_X86_64_PC32 against symbol `stdout@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
在Linux服务器上编译的静态库可以正常使用,另外在WSL中编译的libfftw3.a大小为9.9M,服务器上编译的libfftw3.a只有2.1M,最好使用服务器上编译的库。
如果想要用WSL编译静态库,修改CMakeList.txt,在312行增加下面的内容,重新编译即可解决报错。
add_library (${fftw3_lib} ${SOURCEFILES})
# 增加下面这一行
set_target_properties(${fftw3_lib} PROPERTIES POSITION_INDEPENDENT_CODE ON)