如何构建此静态C库以使用iPhone

时间:2011-04-29 03:02:29

标签: iphone objective-c c cocoa-touch

我一直在尝试为iPhone项目构建一个C库。该库是使用Makefile提供给我的。当我通过简单地运行make并将静态库添加到我的项目来构建库时,链接器抱怨该库是为x86_64架构构建的,并且无法链接到i386。

所以..我编辑了make文件来为i386构建库。该项目现在编译和链接没有问题,但应用程序终止,原因是:

  

检测到试图调用iPhone上不存在的系统库中的符号:fcntl $ UNIX2003从映像KadeChat中的函数irc_connect调用。如果您在gdb中运行模拟器二进制文件时遇到此问题,请确保首先将'start-with-shell off'设置为。

我做了很多谷歌搜索,似乎这可能是我的SDK版本的错误(但我不确定)。

所以..我想在设备上运行这个应用程序,因为显然模拟器不起作用。这个问题是我无法为目标体系结构构建这个库。

  

文件是为不受支持的文件构建的   格式不是架构   被联系起来(armv7)

我再次编辑了make文件,尝试为设备的目标架构构建库。

我在Makefile中进行了以下编辑:

  

CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang   CFLAGS = -Wall -DIN_BUILDING_LIBIRC -O3 -DENABLE_THREADS -D_REENTRANT -arch armv7

这会导致以下错误:

/usr/include/machine/_types.h:36:10:致命错误:'arm / _types.h'文件未找到#include“arm / _types.h”

正如您所看到的,我没有运气让这个图书馆为我工作。由于我是iPhone开发新手,我想我会问。处理移植C库以使用iPhone的最佳方法是什么?我应该尝试直接在我的项目中构建源代码吗?我试过这个,但它导致了很多错误。任何建议都会有所帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

可能最简单的事情就是将库的源代码直接包含在你的项目中,而不是试图让设置正确地使用Makefile手动交叉编译。

如果这导致“很多错误”,也许你错过了一些.h文件,或者Makefile正在设置你在XCode中没有提供的一些“-D”编译器标志。