将静态库附加到iphone / ipad应用程序

时间:2010-06-06 21:42:02

标签: iphone ipad static-libraries static-linking libssh

这是将静态库包含在iPhone或iPad应用程序中的最佳方法吗?

我可以选择

  • 编译提供权利平台的库并使用ar实用程序构建库文件,然后将其作为框架添加到项目中
  • 包括库.c / .h的源代码,并与应用程序一起编译它们

第一种方法似乎更简单,因为我不关心管理我想要包含的库的所有特定设置但是如何为iPhone和iPad创建库并允许xcode在链接时使用正确的库?

第二种方法似乎更复杂,因为xcode会注意编译我的应用程序和库(我想有不同的设置)然后我该怎么办?我可以轻松添加lib的源代码,但是我必须包含make脚本以允许xcode使用它们以正确的方式构建。

有关如何进行的任何建议?我想要包含的库是 libssh 。 (我知道这个库当然已经在iPhone上成功编译并试用了)

提前致谢。

1 个答案:

答案 0 :(得分:1)

我会选择第一种方法。

您应该构建两个不同版本的库,一个用于iPhone,另一个用于iPad。这些必须是包含不同架构的胖库(用于iPhone 3G的armv6,用于iPhone 3GS的armv7,用于iPhone模拟器的i386,用于iPad的另一个用于armv7和i386)。

基本上你为iPhone构建了三个不同的版本,然后使用lipo工具将它们合并在一个胖文件中。

然后,您再次为iPad构建两个不同版本,并使用lipo将它们合并在一起。请注意,您不能在iPad上重复使用最初为iPhone编译的armv7和i386版本,因为您需要使用属于两个不同SDK的编译器来构建它们(iPhone为3.1,iPad为3.2)。

我不确定lipo是否允许您合并到单个文件中两个armv7或两个i386版本的库而不会抱怨。您可能想尝试这个,因为在这种情况下,您可以在整个过程结束时只提供一个胖库。