我想使用优秀的 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 时通常遵循的步骤:
- 在 OS X 上使用适当的标志运行 ./configure。
- 使用 make 验证库是否在 OS X 上正确构建。
- 使用 iOS 静态库模板创建一个新的 Xcode 项目。
- 将之前配置运行的 config.h 添加到 Xcode 项目。
- 读取 automake 文件 (Makefile.am),并将 automaker 目标中的引用源添加到静态库的 Xcode 目标中。
- 将 CPP 标志(即 -DHAVE_CONFIG_H)从 automake 文件复制到 Xcode 中的build设置。
- 在 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/