0

我在我的 Apple m1 电脑上构建了 FFTW 。当我运行时lipo -info libfftw3.a(位于.libs/libfftw3.a)。它说它是架构ARM64

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

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

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

我该如何解决这个问题?我是否需要在英特尔设备中构建库并将这两个库一起创建一个通用库(使用lipo)或者解决这个问题的正确方法是什么?

4

2 回答 2

0

为了为 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

  3. 为 arm64 构建

    ./configure --prefix=/path/to/build/folder/lib-arm64 CFLAGS="-mmacosx-version-min=10.11" make make install

  4. 进行通用构建

    lipo -create path/to/build/folder/lib-intel/libfftw3.a path/to/build/folder/lib-intel/libfftw3.a -output libfftw3_universal.a

  5. 包含libfftw3_universal.a在 Xcode 项目中

于 2021-09-07T12:02:41.970 回答
0

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

./configure CFLAGS="-arch arm64 -arch x86_64 -mmacosx-version-min=11.0"
于 2021-10-11T17:08:29.310 回答