为 Apple M1 和较旧的英特尔设备构建 FFTW

问题描述 投票:0回答:2

我在我的 Apple m1 计算机上构建了 FFTW。当我运行

lipo -info libfftw3.a
(位于
.libs/libfftw3.a
)时。它说它是架构ARM64

在我的 Xcode 中,我将构建目标设置为 10.11,以实现向后兼容性。

现在,当我将 FFTW 库添加到我的 Xcode 项目中时,它会抱怨:

链接库“libfftw3.a”缺少一个或多个架构 该目标所需:x86_64。

我该如何解决这个问题?我是否需要在英特尔设备中构建库并使用这两个库一起创建通用库(使用

lipo
)或者解决此问题的正确方法是什么?

xcode apple-m1 fftw lipo
2个回答
1
投票

您也可以使用此行配置它,它将构建 x86_64 和 arm64 二进制文件。

./configure CFLAGS="-arch arm64 -arch x86_64 -mmacosx-version-min=11.0"

1
投票

为了为 Intel 和 Apple 芯片架构构建静态库,我需要分别为两个架构构建 FFTW,然后创建一个通用库。这是我的做法。

  1. 转到 FFTW 根文件夹

  2. 专为英特尔架构构建

./configure --prefix=/path/to/build/folder/lib-intel CFLAGS="-arch x86_64 -mmacosx-version-min=10.11” 
make 
make install
  1. 为arm64构建
./configure --prefix=/path/to/build/folder/lib-arm64 CFLAGS="-mmacosx-version-min=10.11” 
make
make install
  1. 制作通用版本
lipo -create path/to/build/folder/lib-intel/libfftw3.a path/to/build/folder/lib-intel/libfftw3.a -output libfftw3_universal.a
  1. 在 Xcode 项目中包含
    libfftw3_universal.a
© www.soinside.com 2019 - 2024. All rights reserved.