2011-04-29 78 views
2

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

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

Detected an attempt to call a symbol in system libraries that is not present on the iPhone: fcntl$UNIX2003 called from function irc_connect in image KadeChat. If you are encountering this problem running a simulator binary within gdb, make sure you 'set start-with-shell off' first.

我做了谷歌搜索关于这个的很多,似乎这可能与我的版本的SDK中的错误(但林不当然)。

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

file was built for unsupported file format which is not the architecture being linked (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

与其试图让设置正确地使用Makefile手动交叉编译东西,或许最简单的做法是将库的源直接包含到项目中,如您所说。

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

+0

感谢回复,但即使使用'Other Linker Flags'将make文件中指定的所有标志添加到xcode后,我也有30个编译器错误。它们在'*'之前是'expected')的错误 – Nick 2011-04-29 03:34:23

+1

'其他链接器标记'不适用于编译时错误;编译器标记将不得不在OTHER_CFLAGS中传递如果打开“构建结果”窗口XCode中,您可以看到XCode用于运行编译器的确切命令;将其与您的Makefile所做的相比较。 – 2011-04-29 04:33:33