我一直在尝试为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的最佳方法是什么?我应该尝试直接在我的项目中构建源代码吗?我试过这个,但它导致了很多错误。任何建议都会有所帮助。
谢谢!
答案 0 :(得分:1)
可能最简单的事情就是将库的源代码直接包含在你的项目中,而不是试图让设置正确地使用Makefile手动交叉编译。
如果这导致“很多错误”,也许你错过了一些.h文件,或者Makefile正在设置你在XCode中没有提供的一些“-D”编译器标志。