为 Apple M1 和较旧的英特尔设备构建 FFTW
Build FFTW for Apple M1 and the older intel devices
我在我的 Apple m1 计算机上构建了 FFTW。当我运行lipo -info libfftw3.a
(位于.libs/libfftw3.a
)。上面写着是架构ARM64.
在我的 Xcode 中,为了向后兼容,我将构建目标设置为 10.11。
现在,当我将 FFTW 库添加到我的 Xcode 项目时,它会抱怨:
The linked library 'libfftw3.a' is missing one or more architectures
required by this target: x86_64.
我该如何解决这个问题?我是否需要在 Intel 设备中构建库并创建一个包含这两个库的通用库(使用 lipo
)或者解决此问题的正确方法是什么?
为了为 Intel 和 Apple 硅架构构建静态库,我需要分别为两个架构构建 FFTW,然后制作一个通用库。这是我的做法。
转到 FFTW 根文件夹
为英特尔架构构建
./configure --prefix=/path/to/build/folder/lib-intel CFLAGS="-arch x86_64 -mmacosx-version-min=10.11”
制作
安装
为 arm64 构建
./configure --prefix=/path/to/build/folder/lib-arm64 CFLAGS="-mmacosx-version-min=10.11"
制作
安装
进行通用构建
lipo -create path/to/build/folder/lib-intel/libfftw3.a path/to/build/folder/lib-intel/libfftw3.a -output libfftw3_universal.a
在 Xcode 项目中包含 libfftw3_universal.a
您也可以使用此行对其进行配置,它将构建 x86_64 & arm64 二进制文件。
./configure CFLAGS="-arch arm64 -arch x86_64 -mmacosx-version-min=11.0"
我在我的 Apple m1 计算机上构建了 FFTW。当我运行lipo -info libfftw3.a
(位于.libs/libfftw3.a
)。上面写着是架构ARM64.
在我的 Xcode 中,为了向后兼容,我将构建目标设置为 10.11。
现在,当我将 FFTW 库添加到我的 Xcode 项目时,它会抱怨:
The linked library 'libfftw3.a' is missing one or more architectures required by this target: x86_64.
我该如何解决这个问题?我是否需要在 Intel 设备中构建库并创建一个包含这两个库的通用库(使用 lipo
)或者解决此问题的正确方法是什么?
为了为 Intel 和 Apple 硅架构构建静态库,我需要分别为两个架构构建 FFTW,然后制作一个通用库。这是我的做法。
转到 FFTW 根文件夹
为英特尔架构构建
./configure --prefix=/path/to/build/folder/lib-intel CFLAGS="-arch x86_64 -mmacosx-version-min=10.11” 制作 安装
为 arm64 构建
./configure --prefix=/path/to/build/folder/lib-arm64 CFLAGS="-mmacosx-version-min=10.11" 制作 安装
进行通用构建
lipo -create path/to/build/folder/lib-intel/libfftw3.a path/to/build/folder/lib-intel/libfftw3.a -output libfftw3_universal.a
在 Xcode 项目中包含
libfftw3_universal.a
您也可以使用此行对其进行配置,它将构建 x86_64 & arm64 二进制文件。
./configure CFLAGS="-arch arm64 -arch x86_64 -mmacosx-version-min=11.0"