【问题标题】:Cross-compiling open-source c library for iOS and XCode 4.3为 iOS 和 XCode 4.3 交叉编译开源 c 库
【发布时间】:2023-04-05 19:17:01
【问题描述】:

我想在 iOS 应用程序中使用出色的 stringencoders 库。这是一个相当典型的 c 库,带有一个由 autoconf 和一个 makefile 生成的配置脚本。

我想做的是在 Mac OSX 上编译 arm7 和 i386 版本,然后使用 lipo 制作一个胖二进制文件。

我无法弄清楚如何说服构建工具创建特定于平台的二进制文件。那里有一些文章,甚至还有一些脚本,但其中大多数都针对 XCode 4.2,不适用于 4.3。

看起来应该可以创建一个相当通用的构建脚本,它可以很好地与 configure 和 make 配合使用,但我什至不知道从哪里开始。

你有没有成功地完成过这样的事情?我会喜欢一些指针!

顺便说一句:“将所有源代码导入您的项目”不是一个可行的解决方案。那就是疯狂。

谢谢。

【问题讨论】:

  • 明确地说,您在寻找解决方案的工具集是什么?您似乎正在寻找 XCode 4.3 解决方案,但这并不清楚。
  • 谢谢,我已更改标题以澄清
  • 除非您不知道什么是交叉编译器,否则这听起来像是 Xcode 4.3 特有的配置问题。是吗?

标签: iphone c ios gcc makefile


【解决方案1】:

我已将一些开源 C 库移植到 iOS(请参阅 iOS Ports)。我发现移植库最可靠的方法是构建一个新的 Xcode 项目,其中包含一个静态 iOS 库的构建目标。请务必注意,如果您计划在 iTunes App Store 上分发您的应用程序,Apple 将不允许您的 iOS 应用程序包含动态库,因此您将无法使用 FAT 库。

这些是我在将库移植到通常使用 GNU Autotools 构建的 iOS 时通常遵循的步骤:

  1. 在 OS X 上使用适当的标志运行 ./configure。
  2. 使用 make 验证库是否在 OS X 上正确构建。
  3. 使用 iOS 静态库模板创建一个新的 Xcode 项目。
  4. 将之前配置运行中的 config.h 添加到 Xcode 项目中。
  5. 读取 automake 文件 (Makefile.am),并将 automaker 目标中的引用源添加到静态库的 Xcode 目标中。
  6. 将 CPP 标志(即 -DHAVE_CONFIG_H)从 automake 文件复制到 Xcode 中的构建设置。
  7. 在 Xcode 中编译并开始运行错误(通常通过添加缺少的头文件包含路径或缺少源文件)。

我通常使用的目录结构如下:

project/
project/ported-project.xcodeproj
project/project-x.x.x.tar.gz
project/project-x.x.x
project/project -> project-x.x.x

我知道这并不完全是您在问题中所要求的,但它是我多年来用于移植库的步骤的粗略概述。创建一个实际的 Xcode 来编译移植的库的好处是它可以更轻松地将库集成到多个 Xcode iOS 应用程序中。

如果您需要澄清或更详细的说明,请告诉我,我会尝试编写更详细的说明并更新我的答案。

【讨论】:

    【解决方案2】:

    直接将源文件(即 .c 文件)添加到您的项目中是否可行?

    【讨论】:

      【解决方案3】:

      Objective C 是 C 的超集,所以我很惊讶代码在 XCode 4 中没有直接开箱即用。你是否遗漏了一些东西?只是建议

      【讨论】:

        【解决方案4】:

        使用 gyp 生成您的项目文件:http://code.google.com/p/gyp/ 我用它在 win/osx/ios 和 linux (pi) 之间共享库。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-28
          • 2021-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-03
          相关资源
          最近更新 更多