You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Apple M1及Intel设备编译FFTW并解决Xcode架构缺失报错

问题根因

你将Xcode构建目标版本设置为10.11,该版本早于Apple Silicon的首发版本macOS 11,因此Xcode会默认生成同时兼容Intel x86_64和ARM64架构的通用二进制包,而你在M1上原生编译的FFTW库仅包含ARM64架构切片,因此链接时会提示缺失x86_64架构。


解决方案1:交叉编译合并为通用库(无需Intel设备)

不需要专门使用Intel设备编译,你可以直接在M1设备上交叉编译出x86_64版本的FFTW,再合并为通用库即可,操作步骤如下:

  • 编译x86_64版本FFTW
    执行configure时指定x86_64架构参数:
    ./configure --host=x86_64-apple-darwin CFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" --prefix=./fftw-x86_64
    make -j8 && make install
    
    编译完成后可在./fftw-x86_64/lib路径下获得x86_64架构的libfftw3.a文件。
  • 编译ARM64版本FFTW
    你之前已编译好的ARM64版本可直接使用,若需重新编译可使用以下参数:
    ./configure --host=arm64-apple-darwin CFLAGS="-arch arm64" CXXFLAGS="-arch arm64" LDFLAGS="-arch arm64" --prefix=./fftw-arm64
    make -j8 && make install
    
  • 合并为通用库
    使用lipo工具合并两个架构的库文件:
    lipo -create ./fftw-x86_64/lib/libfftw3.a ./fftw-arm64/lib/libfftw3.a -output libfftw3.a
    
    执行lipo -info libfftw3.a验证,返回结果将显示同时包含x86_64和arm64架构,导入Xcode即可正常链接。

解决方案2:调整Xcode构建设置(适用无需兼容旧Intel设备场景)

如果你的应用不需要支持macOS 11以下的Intel设备用户,可直接修改Xcode架构配置跳过x86_64构建:

  • 将Architectures设置项修改为仅保留arm64
  • 将Build Active Architecture Only的Release配置改为Yes
    修改后Xcode将仅构建ARM64架构的安装包,无需使用x86_64版本的FFTW库。

更规范的方案:使用包管理工具自动处理

可直接通过Homebrew安装FFTW,Apple Silicon设备上的Homebrew默认提供双架构通用版本的FFTW库,执行brew install fftw后,直接导入Homebrew安装路径下的libfftw3.a即可,无需手动编译和合并架构。


内容的提问来源于stack exchange,提问作者Thinium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:54:04