2011-11-22 55 views
23

.a(例如libcrypto.a)文件究竟是什么,它们由什么组成?它是.m还是.o.h.c文件?什么是.a(作为libcrypto.a)文件?

IOS SDK/Xcode如何理解它们?如果我们在我们的xcode项目中包含.a文件,我们是否也需要复制相应的源文件?

+0

很抱歉,对于您指针:) – chetan

回答

39

.a文件是static library文件。它们“包含”一个或多个.o文件,即编译的代码。要使用它们,您(通常)需要对应于已编译代码的标题(.h)文件,但您本身不需要源代码(.c,.m)。

.a文件制作与ar实用程序和链接器(ld)即(通常)由编译器调用知道他们的格式,以及如何从归档和你的可执行文件中提取的代码中的相关部分。

+0

感谢您的及时答复垫即时通讯新本,和力知道,如果它存在, 感谢, 我创建了一个静态库某文件的示例项目和复制另一个项目中的头文件和.a文件。但是当我尝试以调试模式访问这些方法时,控件指向了我创建.a文件的相应.m文件的方法。 为什么它打开.m文件,如果我只添加了.h和.a文件。 – chetan

+0

调试信息包含文件名和行号。这些信息包含在'.o'文件中,以便调试器可以向您显示您正在查看的指令生成的源代码。没有这一点,你只会看到没有用处的程序集。如果有足够的信息,您的IDE可以将该调试信息映射到实际的源代码文件。 – Mat

+0

谢谢,所以你说,只有在调试模式下,IDE指向源文件,而不是在运行时,因为.o文件? 如果我在调试模式下将项目从其位置中删除,则会抛出错误,指出“xcode无法找到源文件”并在该处打破。 但是,当我去运行时,没有错误 – chetan