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

Dar*_*ren 10 c iphone gcc makefile ios

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

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

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

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

你成功完成了这样的事吗?我喜欢一些指针!

BTW:'将所有源代码导入您的项目'不是一个可行的解决方案.那种方式就是疯狂.

谢谢.

Dav*_*dek 4

我已将一些开源 C 库移植到 iOS(请参阅iOS 端口)。我发现移植库的最可靠方法是构建一个新的 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
Run Code Online (Sandbox Code Playgroud)

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

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