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

如何构建此静态C库以与iPhone配合使用,iphone,objective-c,c,cocoa-touch,Iphone,Objective C,C,Cocoa Touch,我一直在尝试为iPhone项目构建一个C库。该库提供给我一个Makefile。当我通过简单地运行make并将静态库添加到我的项目中来构建库时,链接器会抱怨这个库是为x86_64体系结构构建的,不能链接到i386 所以。。我编辑了make文件以构建i386的库。项目现在编译和链接没有问题,但应用程序因以下原因终止: 检测到有人试图调用iPhone上不存在的系统库中的符号:fcntl$UNIX2003从图像KadeChat中的函数irc_connect调用。如果您在gdb中运行模拟器二进制文件时遇到

我一直在尝试为iPhone项目构建一个C库。该库提供给我一个Makefile。当我通过简单地运行make并将静态库添加到我的项目中来构建库时,链接器会抱怨这个库是为x86_64体系结构构建的,不能链接到i386

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

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

我在谷歌上搜索了很多,这似乎是我的SDK版本的一个bug(但我不确定)

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

文件是为不受支持的文件生成的 不是体系结构的格式 正在链接(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上的最佳方法是什么?我是否应该尝试直接在我的项目中构建源代码??我尝试过这个,但它导致了许多错误。任何建议都会有帮助


谢谢

也许最简单的方法是像您所说的那样,将库的源代码直接包含到您的项目中,而不是尝试通过使用Makefile手动交叉编译来获得正确的设置


如果这导致了“许多错误”,可能是您丢失了一些.h文件,或者Makefile正在设置一些未在XCode中提供的“-D”编译器标志。

谢谢您的回复,但即使使用“其他链接器标志”将make文件中指定的所有标志添加到XCode中,我仍有大约30个编译器错误。这些错误类似于“*”之前的“expected”):)“其他链接器标志”不适用于编译时错误;编译器标志必须在其他标志中传递。如果在XCode中打开“build results”窗口,您可以看到XCode用于运行编译器的确切命令;请将其与Makefile的操作进行比较。