如何在 Xcode 中链接 fftw3? (苹果电脑)

Posted

技术标签:

【中文标题】如何在 Xcode 中链接 fftw3? (苹果电脑)【英文标题】:How to link fftw3 in Xcode? (Mac) 【发布时间】:2014-04-28 11:23:03 【问题描述】:

我在 (How do I link third party libraries like fftw3 and sndfile to an iPhone project in Xcode?) 上遵循了脚本 但我得到了一个错误。首先通过配置:

./configure --host=arm-apple-darwin --target=arm-apple-darwin --enable-float --enable-neon .... 检查 C 编译器是否接受 -march=armv7 -mfpu=neon... no configure: error: Need a compiler with support for -march=armv7 -mfpu=neon

最后将 ARM 库复制到一个临时位置:

lipo -arch armv7 $RESULT_DIR/libfftw3f_armv7.a -arch armv7s $RESULT_DIR/libfftw3f_armv7s.a -arch i386 $RESULT_DIR/libfftw3f_i386.a -arch x86_64 $RESULT_DIR/libfftw3f_x86_64.a -arch arm64 $RESULT_DIR/libfftw3f_arm64.a -create -output $RESULT_DIR/libfftw3f.a

lipo:未知架构规范标志:arm64 在指定 输入文件-arch arm64 ios-library/libfftw3f_arm64.a

lipo:已知 架构标志是:任何小的大 ppc64 x86_64 ppc970-64 ppc i386 m68k hppa sparc m88k i860 veo arm ppc601 ppc603 ppc603e ppc603ev ppc604 ppc604e ppc750 ppc7400 ppc7450 ppc970 i486 i486SX 奔腾 i586 pentpro i686 pentIIm3 pentIIm5 pentium4 m68030 m68040 hppa7100LC veo1 veo2 veo3 veo4 armv4t armv5 xscale armv6 armv6m armv7 armv7f armv7s armv7k armv7m armv7em

lipo:用法:lipo [input_file] ... [-arch input_file] ... [-info] [-detailed_info] [-output output_file] [-create] [-arch_blank] [-thin] [-remove] ... [-extract] ... [-extract_family ] ... [-verify_arch ...] [-replace ] ...

我正在使用 gcc49 和 Mac OS X 10.9.2、iOS 7.1。任何的想法 ?谢谢

【问题讨论】:

但是那个错误信息清楚地说明了你的问题,不是吗? lipo 不知道任何名为 arm64 的架构。 我是个初学者。谢谢,所以当我将图书馆“/libfftw3f_arm64.a”带走时它会起作用吗? 第一个错误是怎么回事?我需要一个编译器... 当我从 lipo 中取出一些库时,它向我显示了这个错误:lipo:文件(ios-library/libfftw3f_armv7.a)的指定架构类型(armv7)与它的 cputype 不匹配(16777223 ) 和 cpusubtype (3) (应该是 cputype (12) 和 cpusubtype (9)) 【参考方案1】:

第一个错误,配置应该是这样的:

./configure --host=arm-apple-darwin --target=arm-apple-darwin --enable-float

(没有 --enable-neon ) 第二个错误,因为库都来自arch x86_64。他们应该有正确的架构(libfftw3f_i386.a 应该有 arch.i386.a 和 libfftw3f_armv7s.a arch.armv7s.a 等等)

我可以通过使用 macports(或者你可以使用自制软件)为 FFTW 制作正确的库,以安装用于 OpenFrameworks 的通用构建库。

在终端窗口中输入:

sudo port install fftw-3 +universal

port install 命令会将 fftw3.h 头文件放置在 your_HD/opt/local/include 文件夹中,并将 libfftw3.a 库放置在 your_HD/opt/local/lib 文件夹中。要在您的 OF 项目中使用该库,请通过菜单选项 Project -> Add to project... 将这两个文件添加到您的项目中。

感谢大家的帮助,特别感谢@Adam Freeman

【讨论】:

以上是关于如何在 Xcode 中链接 fftw3? (苹果电脑)的主要内容,如果未能解决你的问题,请参考以下文章

使用 FFTW3/QWT 绘制频谱需要哪个框架

如何在没有苹果开发者帐户的情况下降级 Xcode?

[其它]iOS 12.2支持电信VoLTE了,中国电信教你如何开通:只要三步

如何修复 xcode 苹果配置的“丢失私钥”?

由于苹果链接器错误,应用程序重命名后单元测试无法运行

[译]Xcode 环境配置最佳实践