Linux环境FFTW源码编译 | recompile with -fPIC报错解决

本文详细介绍了在Linux及WindowsSubsystemforLinux(WSL)环境下编译FFTW库的步骤,包括动态库和静态库的编译,以及遇到recompilewith-fPIC错误时的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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环境中编译,和上面的方法是一样的。

三、recompile with -fPIC报错解决

静态库在引用的时候可能会报错

报错信息

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

解决方法是修改CMakeList.txt,在312行增加下面的内容,重新编译即可解决报错。

add_library (${fftw3_lib} ${SOURCEFILES})
# 增加下面这一行
set_target_properties(${fftw3_lib} PROPERTIES POSITION_INDEPENDENT_CODE ON)

在WSL中编译的libfftw3.a大小为9.9M,服务器上编译的libfftw3.a只有2.1M。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值