为iPhone创建静态库

Mar*_*ote 16 iphone xcode static-libraries

有一个开源库,我想用于我的iPhone应用程序.该库是用C语言编写的,并使用Makefile编译.我想使用静态库.

如果我将.a文件添加到我的项目依赖项中,它可以很好地与模拟器一起使用,但是在定位iPhone SDK时它不会链接(当然因为.a文件是为Intel平台编译的).

我应该使用哪些GCC编译器标志来编译iPhone SDK的静态库?我认为'-arch'选项会为我提供一个iPhone架构,但没有运气.

任何帮助,将不胜感激.

dig*_*dog 6

对于基于autoconf的库,我会投票给Christopher Stawarz的构建脚本:

http://pseudogreen.org/blog/build_autoconfed_libs_for_iphone.html

使用此脚本,您可以使用单个命令自动执行整个过程,并轻松地为不同平台提供库二进制文件,例如iPhoneOS 2.0/2.1/2.2/2.2.1和iPhoneSimulator 2.0/2.1/2.2/2.2.1.

但是,由于Xcode 3.1的更改,$(SDKROOT)构建设置变成了一些简短的名称,如"macosx10.5","iphoneos2.2.1"或"iphonesimulator2.2.1".因此,他在文章中提到的关于在Xcode中为库和标题设置搜索路径的方式将不起作用(在Xcode 3.1中).您需要自己对路径进行硬编码.

  • 有没有人对此问题有更新的答案? (2认同)

小智 3

尝试使用arm-apple-darwin-gcc 作为您的GCC 应用程序进行编译。然后,您可以使用 lipo 将 2 个静态库(arm 和 386)合并在一起,以便 sim 与设备上的开发是无缝的。