【问题标题】:Attaching a static library to an iphone/ipad application将静态库附加到 iphone/ipad 应用程序
【发布时间】:2010-06-06 21:42:01
【问题描述】:

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

我可以选择

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

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

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

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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    我会选择第一种方法。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2012-04-09
      • 2011-05-25
      • 1970-01-01
      相关资源
      最近更新 更多