2014-10-17 110 views
0

我尝试编译库iOS应用程序,我收到以下错误信息:OSX交叉编译库对ARMv7

creating cache ./config.cache 
checking for gcc... /Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch armv7 
checking whether the C compiler (/Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch armv7 ) works... no 
configure: error: installation or configuration problem: C compiler cannot create executables. 

任何想法,为什么ARMv7的编译器不能创建可执行文件,但它的工作原理对于i386和x86_64?我如何解决这个错误?

回答

1

什么库?

我猜测它的外观OpenSSL(BSD-generic32是告诉),如果是这样,只需使用OpenSSL-for-iPhone来构建它。

如果您好奇,帮助选择正确构建的重要部分位于build-libssl.sh脚本中。

UPDATE:

有时候,指定-arch是不够的。通过整个-target是很有帮助的,尤其是在编译C库或通常部署在unix类型系统上的库时。

尝试clang -target arm64-apple-ios ...clang -target armv7-apple-ios ...,然后使用lipo将这些库合并为一个具有多种体系结构支持的库。

对于例如clang -target armv7-apple-ios -dM -E - < /dev/null|less,您可以尝试使用可能的目标三元组(如果您好奇,请检查它们生成的定义),例如,

+0

谢谢你的回答。我修复了BSD-generic32问题。我已经构建了OpenSSL。我正在尝试构建另一个使用OpenSSL执行https请求的库(TCLink)。我对此很陌生,并且对编译器为什么不生成ARMv7的可执行文件感到困惑。 – 2014-10-17 20:17:46