如何在iOS上编译fftw3

时间:2011-10-21 14:10:10

标签: c++ c ios makefile fftw

现在我只想在iOS上使用FFTW3,因为我已经将它成功编译成iOS模拟器使用的i386版本,剩下的工作是将它编译成armv6(或v7)版本和lipo这两个版本在一起,下面是我的错误配置:

  

./配置   CC = /开发商/平台/ iPhoneOS.platform /开发人员的/ usr /斌/臂-苹果darwin10-GCC-4.2.1   LD = /开发/平台/ iPhoneOS.platform /开发人员的/ usr / bin中/ LD   CCFLAGS =“ - 我   /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/lib/gcc/arm-apple-darwin10/4.2.1/include/   -I /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include/   -miphoneos-version-min = 2.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk“   LDFLAGS =“ - arch armv6 -isysroot   /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk”   --enable-float --host = arm-apple-darwin --build = arm-apple-darwin10 --disable-fortran

当使用它来构建fftw3时,我总是得到这个:

检查与BSD兼容的安装... / usr / bin / install -c 检查构建环境是否理智......是的 检查arm-apple-darwin-strip ...没有 检查条带...条带 configure:警告:使用不带host triplet前缀的交叉工具 检查线程安全的mkdir -p ... ./install-sh -c -d 检查gawk ...没有 检查mawk ...没有 检查nawk ...没有 检查awk ... awk 检查make是否设置$(MAKE)...是 检查是否启用Makefile的维护者特定部分...否 检查构建系统类型... arm-apple-darwin10 检查主机系统类型... arm-apple-darwin 检查arm-apple-darwin-gcc ... /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1 检查C编译器是否正常工作...没有 configure:error:in /Users/chencyz/Desktop/Development/Misc/fftw3/fftw-3.3': configure: error: C compiler cannot create executables See config.log'了解更多详情

我对问题不太清楚(C编译器不起作用?),有人能给我一些指南,非常感谢!

2 个答案:

答案 0 :(得分:1)

根据./configure --help:

--build=BUILD     configure for building on BUILD [guessed]
--host=HOST       cross-compile to build programs to run on HOST [BUILD]

所以关键是传递--host = arm-apple-darwin10,并使用对PATH,CFLAGS,LDFLAGS等的正确更改执行configure。

这似乎有效:

PATH=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:$PATH \
../configure --host=arm-apple-darwin10 CFLAGS="-I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include -I/Library/iPhone/include -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" \
CC=arm-apple-darwin10-gcc-4.2.1 \
CPP=cpp \
LDFLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk" \
--enable-single
祝你好运。

答案 1 :(得分:0)

在尝试为iOS编译时,我遇到了类似的问题。查看配置脚本,它似乎没有使用$LDFLAGS变量,但如果确实如此,我认为您可以将以下内容添加到configure行:

./configure CC=... CFLAGS="-arch armv7 -isysroot $SDKROOT" CXXFLAGS="$CFLAGS" LDFLAGS="$CFLAGS -Wl,-syslibroot $SDKROOT"

默认情况下$SDKROOT/Developer/Platforms/iPhone.platform/Developer/SDKs/iPhone5.0.sdk(使用iOS 5.0 SDK)。

我从来没有编译过可爱,因为我无法弄清楚如何纠正C编译器调用,但是,你的里程可能会有所不同。