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

11

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

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

我遇到了一些麻烦,无法弄清楚如何说服构建工具创建我的特定于平台的二进制文件。虽然有一些文章甚至一些脚本,但大多数都针对XCode 4.2并且不适用于4.3。

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

你是否成功完成过这样的操作?我需要一些指导!

顺便说一下:“将所有源代码导入到您的项目中”不是一种可行的解决方案。那会让人发疯的。

谢谢。


请明确一下,您需要解决什么工具集的问题?似乎您正在寻找XCode 4.3的解决方案,但这并不清楚。 - Peter M
谢谢,我已经更改了标题以澄清。 - Darren
除非您不知道什么是交叉编译器,否则这听起来像是针对Xcode 4.3的特定配置问题。是吗? - Garen
4个回答

4
我已经将一些开源C库移植到iOS(请参见iOS Ports)。我发现将库移植到iOS的最可靠方法是使用iOS静态库构建新的Xcode项目。需要注意的是,如果您计划在iTunes应用商店上分发应用程序,则苹果不允许您的iOS应用程序包含动态库,因此您将无法使用FAT库。
以下是我通常在将使用GNU Autotools构建的库移植到iOS时遵循的步骤:
  1. 在OS X上使用适当的标志运行./configure。
  2. 使用make在OS X上验证库是否正确构建。
  3. 使用iOS静态库模板创建新的Xcode项目。
  4. 将先前配置运行的config.h添加到Xcode项目中。
  5. 阅读automake文件(Makefile.am),并将自动制作目标中引用的源添加到静态库的Xcode目标中。
  6. 从automake文件复制CPP标志(即-DHAVE_CONFIG_H)到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应用程序中变得更容易。

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


1

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


0

0

Objective C是C的超集,所以我很惊讶代码在XCode 4中没有直接运行。你有什么遗漏吗?只是建议一下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接