iphone - 为 iOS 和 XCode 4.3 交叉编译开源 c 库

标签 iphone c ios gcc makefile

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

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

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

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

你有没有成功地完成过这样的事情?我想要一些指示!

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

谢谢。

最佳答案

我已将一些开源 C 库移植到 iOS(参见 iOS Ports)。我发现移植库的最可靠方法是使用静态 iOS 库的构建目标构建一个新的 Xcode 项目。请务必注意,如果您计划在 iTunes App 商店上发布您的应用程序,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 中的build设置。
  7. 在 Xcode 中编译并开始运行错误(通常是通过添加缺少的 header 包含路径或缺少的源文件)。

我常用的目录结构如下:

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 应用程序中。

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

关于iphone - 为 iOS 和 XCode 4.3 交叉编译开源 c 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483231/

相关文章:

iphone - 使用来自iPhone的线程进行HTTP请求

iphone - UITabViewController、viewWillAppear 没有被调用?

ios - 通过 UINavigationController 进行 segue 的优势

c - 单词反转程序。由于空行而缺少单词

ios - init 中额外调用 'color'

objective-c - 带有 UIImageView 的 UIScrollView 的正确 contentSize

iphone - iPhone 上的二进制短信

使用命令行参数的 C 管道

C 输入和输出

iphone - iOS 6.1的PhoneGap在启动时显示奇怪的警报,并在加载屏幕时挂起