2

将静态库包含到 iPhone 或 iPad 应用程序中的最佳方法是什么?

我可以选择

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

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

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

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

提前致谢。

4

1 回答 1

1

我会选择第一种方法。

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

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

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

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

于 2010-06-06T22:03:59.497 回答